Почему возникает эта ошибка и как ее исправить.
Полный текст ошибки выглядит следующим образом:
$ sh script.sh
bash: script.sh: /bin/sh^M: bad interpreter: No such file or directory
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
$ dos2unix script.sh