Линия Shebang для Node не работает в Ubuntu 18

Я только что создал экземпляр Ubuntu 18.04 на AWS и скопировал существующий проект поверх. Обычная линия Шебанга для Node #!/usr/bin/env node сейчас не работает. Это дало:

 #!/usr/bin/env: No such file or directory

Что может быть не так?

мой $PATH переменная:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

which node дает: /usr/bin/node

which nodejs дает /usr/bin/nodejs

ls -l nodejs дает: /usr/bin/nodejs -> /etc/alternatives/nodejs

ls -l /usr/bin/env дает:

-rwxr-xr-x 1 root root 35000 Jan 18  2018 /usr/bin/env

1 ответ

Решение

Сценарий, который выдает это сообщение об ошибке, каким-то образом искажен. Например, если вы выполнили некоторую корректировку своего сценария в редакторе Windows перед отправкой его в свой экземпляр AWS, ваш сценарий теперь, вероятно, начинается с непечатной спецификации до начала, и, возможно, все строки вашего сценария теперь заканчиваются в любимом CR Microsoft. -LF комбо вместо традиционного Unix LF.

Проверьте вывод этой команды на вашем экземпляре AWS:

$ LC_ALL=C sed -n 1l myscript.sh

Что говорит sed напечатать первую строку вашего сценария, но экранировать все непечатаемые символы и завершить строку $ символ (в случае, если в конце строки есть невидимые пробелы).

Там только один правильный вывод:

#!/usr/bin/env node$

Если то, что вы видите, выглядит не совсем так, запустите ту же команду на вашем оригинале myscript.sh, Если вы получите тот же результат, исправьте его там, а затем снова скопируйте в AWS.

Другие вопросы по тегам