Ошибка /bin/bash^M: bad interpreter: No such file or directory при запуске скриптов
- AJIekceu4
- 17.03.2021
- 22 899
- 3
- 30
- 29
- 1
Вступление
Иногда при запуске различных sh скриптов можно столкнуться вот с такой ошибкой:
bash: ./script.sh: /bin/bash^M: bad interpreter: No such file or directory
В данной статье мы рассмотрим причину возникновения данной ошибки и о способах ее исправления.
Причина возникновения
Как видно из текста ошибки, при запуске скрипта вместо стандартного шелла /bin/bash
скрипт пытается запустить его из директории /bin/bash^M
и ожидаемо выдает ошибку, потому что такого пути не существует. Все дело в том, что ^M
- это символ возврата каретки (окончания строки), который обычно используется на Windows системах. По всей видимости, данный скрипт редактировался каким-либо текстовым редактором, в настройках которого был выставлен режим Windows (а не Linux) и из-за этого, при запуске скрипта получается такая ошибка.
Как исправить ошибку (способ 1: очень быстрый)
Допустим, наш скрипт, при запуске которого мы получаем ошибку будет называться script.sh
.
1) Делаем его резервную копию, чтобы иметь возможность восстановить работоспособность, если что-либо пойдет не так.
2) Запускаем следующую команду:
sed -i -e 's/\r$//' script.sh
Она должна заменить все символы переноса строки Windows на те, которые используются на Linux системах. Способ не совсем универсальный, поэтому иногда может не сработать.
3) После выполнения данной команды, пытаемся запустить на скрипт script.sh
и проверить работоспособность. Если не помогло, то восстанавливаем оригинал из резервной копии и переходим ко второму способу.
Как исправить ошибку (способ 2: медленный, но очень надежный)
Если первый способ не помог, либо если вы часто сталкиваетесь с такой ошибкой, то можно воспользоваться специальной утилитой dos2unix
, которая как раз подходит для таких случаев
1) Делаем резервную копию script.sh
, чтобы восстановить его в случае проблем.
2) Устанавливаем утилиту dos2unix
sudo apt update && sudo apt install dos2unix
3) Выполняем команду:
dos2unix script.sh
dos2unix: converting file script.sh to Unix format...
4) После выполнения данной команды, пытаемся запустить на скрипт script.sh
и проверить работоспособность.
Добавить комментарий