Я только что создал экземпляр Ubuntu 18.04 на AWS и скопировал существующий проект. Обычная строка хижины для Узла #!/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
Сценарий, который дает это сообщение об ошибке, был искажен так или иначе. Например, если Вы сделали некоторую ретушь своего сценария в редакторе Windows прежде, чем поставить его в Ваш экземпляр AWS, Ваш сценарий теперь, вероятно, запускается с непечатаемого BOM перед хижиной, и возможно строки всего Вашего сценария теперь заканчивают в любимой комбинации CR-LF Microsoft вместо традиционного Unix LF.
Проверьте вывод этой команды на Вашем экземпляре AWS:
$ LC_ALL=C sed -n 1l myscript.sh
Это говорит sed
распечатать первую строку Вашего сценария, но выйти из всех непечатаемых символов и закончить строку a $
символ (в случае, если существуют невидимые пробелы в конце строки).
Существует только один корректный вывод:
#!/usr/bin/env node$
Если то, что Вы видите, точно не походит на это, выполнять ту же команду на Вашем оригинале myscript.sh
. Если Вы получаете тот же результат, фиксируете его там, то копируете его в AWS снова.