Линия 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.