Подтвердить что ты не робот

Как решить "плохой интерпретатор: нет такого файла или каталога"

Я пытаюсь запустить sh script и получить следующую ошибку на Mac:

/usr/bin/perl^M: bad interpreter: No such file or directory

Как я могу это исправить?

4b9b3361

Ответ 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).

Ответ 5

Альтернативный подход:

sudo ln -s /usr/bin/perl /usr/local/bin/perl`echo -e '\r'`

Ответ 6

И если вы предпочитаете Sublime Text - просто перейдите в View → Line Endings и отметьте Unix.