#! / bin / bash: Nenhum arquivo ou diretório [duplicado]

5

Sinto muito por perguntar isso, mas não entendo por que recebi este erro:

line 1: #!/bin/bash: No such file or directory

ao executar qualquer parte do script bash como este:

#!/bin/bash
echo "pouet"

Eu tentei executá-lo em um Fedora 19 e tudo correu bem.

Eu estou no Debian 7, tentei analisar a primeira linha para procurar \n\r , mas tudo estava limpo (todos os scripts que fiz até agora parecem se comportar da mesma maneira).

Meu $PATH tem esta aparência: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin . Eu tentei com um usuário normal ou raiz, mesmo resultado. Mas o resto do script parece se comportar normalmente (o eco é interpretado). E sim, /bin/bash existe e é executável.

Editar:

$ LC_ALL=C sed -n l < tesT.sh
737#!/bin/bash$
echo "pouet"$
    
por doctori 18.01.2014 / 08:56

1 resposta

13

Veja #! / bin / bash - nenhum desses arquivos ou diretório .

Algo está errado na primeira linha do seu script.

Use

head -n 1 yourscript | LC_ALL=C od -tc

Ou:

LC_ALL=C sed -n 'l;q' your-script

para descobrir o que está errado.

Se a saída começar com 357 273 277 , é uma marca de pedido de byte UTF8 . Em vim você pode usar set nobomb para removê-lo.

Nem o kernel (que interpreta a linha she-bang), nem o sh de seu sistema (que é chamado para scripts que não têm um she-bang) reconhecem essa BOM, então o que você está vendo aqui é :

  1. O kernel retorna ENOEXEC ao executar esse script, pois ele não é um executável reconhecido (não é um executável binário nativo e não é um script, pois não inicia com #! ).
  2. Seu shell interativo, sobre esse ENOEXEC , chama sh .
  3. Esse sh lê e interpreta o arquivo. A primeira linha não é um comentário, o # não é precedido por um espaço em branco, portanto, ele tenta executar <BOM>#/bin/bash e relata uma mensagem de erro.
por 18.01.2014 / 09:51

Tags