Ошибка /bin/sh^M: bad interpreter: No such file or directory

Ошибка /bin/sh^M: bad interpreter: No such file or directory
Почему возникает эта ошибка и как ее исправить.

Полный текст ошибки выглядит следующим образом:

$ sh script.sh
bash: script.sh: /bin/sh^M: bad interpreter: No such file or directory

Что означает?

^M — это символ перевода возврата каретки. Linux использует символ перевода строки, чтобы отметить конец строки, в то время как для Windows использует последовательность из двух символов CR LF. Это значит, что Ваш файл содержит переводы строки в стиле Windows, что сбивает с толку Linux и приводит к этой ошибке.

Как исправить?

Есть несколько способов:

1. Воспользоваться редактором Vi. Открываем файл

$ vi script.sh

Вводим следующую строку

:set fileformat=unix

И сохраняем изменения:

:wq

2. При помощи команды sed.

sed -i -e ‘s/\r$//’ script.sh

3. При помощи утилиты dos2unix.

aptitude install dos2unix
$ dos2unix script.sh

Stas Kuryan

Web developer. Перфекционист в написании кода.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *