Estou com problemas para executar o script .sh no Windows usando o Cygwin.
Quando eu corro o arquivo: ./build.sh -s srv.txt
estou recebendo:./build.sh: line 1: #!/bin/bash: No such file or directory
Vocês podem me ajudar, o que isso significa? A 1ª linha é comentada :)
obrigado.
cygwin
shell-script
elbek
fonte
fonte
/bin
? É executável (chmod + x / bin / bash)?/usr/bin/bash
Respostas:
Eu tive o mesmo problema executando cygwin no windows. Para mim, não tinha nada a ver com o caminho.
Tinha tudo a ver com a codificação. Eu estava usando
UTF-8
com o BOM (Byte Order Mark) . O BOM estava causando um estrangulamento. Uma vez que eu removi, funcionou perfeitamente.Eu atualizei a codificação usando o Notepad ++ por:
O
which bash
comando foi emitido:No entanto, ainda foi capaz de resolver
fonte
Geralmente, significa que há um
^M
(retorno de carro) no final de cada linha do seu arquivo ou algum outro problema de codificação que impede que a#!/bin/bash
linha seja interpretada corretamente.Faça uma cópia do arquivo e salve-o como ASCII simples usando um editor de sua escolha para remover o máximo possível de codificação não-ASCII. Além disso, tente salvá-lo no formato 'UNIX' se o editor o suportar.
fonte
Você já tentou correr ...
Ao invés de...
Eu não tenho certeza (eu nunca rodei o Cygwin) mas parece que
/bin/bash
não é um caminho na sua máquina, então o seu shebang (#!/bin/bash
) explode o programa.Se você executar o programa usando
sh
o shebang deve ser tratado como um comentário.Espero que isto ajude.
fonte
#!/bin/bash
(chamado shebang, abreviação de Crash (#
) Bang (!
), diz ao shell qual programa usar para executar o script em questão.Você verá isso com perl scripts (#!/usr/bin/perl
), Python (#!/usr/bin/python
) ou php (#!/usr/bin/php
) também.Na sua situação, algumas coisas podem estar causando isso. O shell 'bash' não está instalado ou o script está em um formato não reconhecido que você não pode ver.
Primeiro, existe bash? Nos dê os resultados disso:
ls -l /bin/bash
Em segundo lugar, o que está no script? Nos dê as 2 primeiras linhas deste:
od -c build.sh
O que estamos procurando é o script estar no formato errado. O Windows gostaCRLF'
ou\r\n
para uma linha que termina enquanto o Linux só gostaLF
ou\n
(veja também: http://en.wikipedia.org/wiki/Newline )Para ser honesto, não sei se o CYGWIN gosta de finais de linha do Windows ou Linux, mas essa é uma causa muito provável para o seu problema.
Novamente, nos dê a saída
od -c build.sh
e vamos ver o que está acontecendo.fonte
No passado eu tive problemas / M em scripts python escritos em uma caixa do Windows e tentando usá-los em uma caixa linux. Eu usei o dos2unix para converter os arquivos para torná-los operáveis na caixa linux. Se o carro retornar (ou outros problemas de formatação de texto do Windows) existir e for a causa do problema, isso pode ajudar.
fonte