Eu queria executar um script de shell:
-rwxr-x--x 1 root root 17234 Jun 6 18:31 create_mgw_3shelf_6xIPNI1P.sh
Tentei fazer um procedimento padrão, mas recebi este erro:
./create_mgw_3shelf_6xIPNI1P.sh
localhost 389 -l /opt/fews/sessions/AMGWM19/log/2013-06-06-143637_CLA-0
DEBUG cd/etc/opt/ldapfiles/ldif_in ;
./create_mgw_3shelf_6xIPNI1P.sh
localhost 389 -l /opt/fews/sessions/AMGWM19/log/2013-06-06-143637_CLA-0
**ERROR sh: ./create_mgw_3shelf_6xIPNI1P.sh: /bin/bash^M: bad interpreter: No such file or directory**
O que isso significa? Eu estava fazendo isso como o root
usuário do root
grupo.
Isso significa que o arquivo não tem a permissão correta para o root
usuário?
fonte
dos2unix
programa.\n
porque é Unix. O script talvez fosse de uma versão anterior do Mac OS? Você poderia corrersed -i -e 's/\r$/\n/' script.sh
nesse caso.No vim, você também pode usar
:set ff=unix
e salvar o arquivo ou:set ff=dos
obter a formatação do DOS novamente.fonte
Seu arquivo possui terminações de linha no estilo DOS / Windows (CR LF) , mas em sistemas semelhantes ao Unix, apenas o caractere de controle LF é usado como quebra de linha.
O caractere de controle CR adicional é mostrado codificado como
^M
em sua saída. Você também pode vê-lo quando executacat -A create_mgw_3shelf_6xIPNI1P.sh
.Para converter as terminações de linha do estilo DOS / Windows para o estilo Unix, existe uma ferramenta chamada
dos2unix
. Você o instala usando:Em seguida, você pode simplesmente converter as terminações de linha dos arquivos de ambos os modos usando
No seu caso, basta executar este comando abaixo e o arquivo de script será convertido no local:
Depois disso, o Bash deve ser capaz de interpretar o arquivo corretamente.
fonte
O problema é que você edita com o Dos!
abra seu arquivo com vi e defina unix com:
e tudo bem
fonte
Faça
vi <your script>
.então
:set list
; ele exibirá qualquer um dos caracteres especiais em seu script.substitua o caractere:
:%s/^M//gc
[para digitar,^M
pressione Ctrl+ v+ m]fonte
Conforme explicado nas outras respostas, esse é um problema de formato. Portanto, a resposta é alterar o formato do DOS para o final da linha de estilo Unix. Esta é mais uma maneira simples de corrigir seu arquivo 'no lugar'
Está disponível no pacote
tofrodos
:fonte
Você também pode usar o gedit para remover os caracteres indesejados. No menu Arquivo, selecione Salvar como e defina o tipo de final de linha unix / Linux.
fonte