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 é :
- 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#!
). - Seu shell interativo, sobre esse
ENOEXEC
, chamash
. - 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.