Acabei de criar uma instância do Ubuntu 18.04 na AWS e copiei um projeto existente. A linha shebang usual para o Node #!/usr/bin/env node
agora não funciona. Deu:
#!/usr/bin/env: No such file or directory
O que pode estar errado?
Minha $PATH
variável é:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
which node
dá:/usr/bin/node
which nodejs
dá/usr/bin/nodejs
ls -l nodejs
dá:/usr/bin/nodejs -> /etc/alternatives/nodejs
ls -l /usr/bin/env
dá:
-rwxr-xr-x 1 root root 35000 Jan 18 2018 /usr/bin/env
O script que fornece essa mensagem de erro foi danificado de alguma forma. Por exemplo, se você fez algum retoque de seu script em um editor do Windows antes de enviá-lo para sua instância AWS, seu script agora provavelmente começa com um BOM sem impressão antes do shebang e talvez todas as linhas do seu script agora terminem no CR favorito da Microsoft -LF em vez do Unix LF tradicional.
Verifique a saída deste comando em sua instância da AWS:
Isso diz
sed
para imprimir a primeira linha do seu script, mas escape de todos os caracteres não imprimíveis e termine a linha com um$
caractere (caso haja espaços invisíveis no final da linha).Há apenas uma saída correta:
Se o que você vê não se parece exatamente com isso, execute o mesmo comando em seu arquivo
myscript.sh
. Se você obtiver o mesmo resultado, corrija-o lá e copie-o para a AWS novamente.