Как решить "плохой интерпретатор: нет такого файла или каталога"
Я пытаюсь запустить sh script и получить следующую ошибку на Mac:
/usr/bin/perl^M: bad interpreter: No such file or directory
Как я могу это исправить?
Ответ 1
Удалите контрольные символы ^M с помощью
perl -i -pe 'y|\r||d' script.pl
Ответ 2
/USR/бен/Perl ^ M:
Удалите ^M в конце usr/bin/perl из строки #! в начале script. Это ложный символ ASCII 13, который заставляет оболочку сходить с ума.
Возможно, вам нужно будет проверить файл с помощью двоичного редактора, если вы не видите символ.
Вы можете сделать это, чтобы преобразовать файл в формат окончания строки Mac:
$ vi your_script.sh
один раз в vi тип:
:set ff=unix
:x
Ответ 3
Проблема заключается в том, что вы пытаетесь использовать текстовый формат DOS/Windows на машине Linux/Unix/OSX.
В текстовых файлах DOS/Windows разрыв строки, также известный как новая строка, представляет собой комбинацию из двух символов: возврат каретки (CR), за которым следует линия подачи (LF). В текстовых файлах Unix разрыв строки - это один символ: Линейный канал (LF).
Dos2unix может конвертировать для вас кодировку файлов, например:
dos2unix yourfile yourfile
Для справки: man dos2unix.
Ответ 4
У вас, похоже, странные окончания строк в script: ^M есть возврат каретки \r. Преобразуйте окончание строки script в Unix (только \n вместо \r\n, которая является строкой, заканчивающейся в системах Windows).