Строка хижины для Узла не работает в Ubuntu 18

Я только что создал экземпляр 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
2
задан 12 February 2019 в 05:29

1 ответ

Сценарий, который дает это сообщение об ошибке, был искажен так или иначе. Например, если Вы сделали некоторую ретушь своего сценария в редакторе 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 снова.

1
ответ дан 2 December 2019 в 04:39

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

Похожие вопросы: