Назад | Перейти на главную страницу

Проблема с плохим интерпретатором оболочки

Я переместил свою систему с ubuntu 9 на debian 5, и cron каждый раз, когда пытается выполнить сценарий, выдает ...

-bash: ./somescript.sh: /bin/sh^M: bad interpreter: No such file or directory

все мои сценарии начинаются с

#!/bin/sh

любая подсказка? мне нужно изменить оболочку, в которой работает cron? он использует другую оболочку?

Который ^M немного заставляет меня думать, что ваш сценарий использует Окончания строк CR-LF. Обычно это происходит, когда вы редактируете файл с помощью текстового редактора Windows.

Чтобы исправить это, установите пакет tofrodos и преобразуйте файл:

sudo aptitude install tofrodos
fromdos -b /path/to/script.sh

У вас есть возврат каретки в вашем документе (возможно, отредактированном с помощью программы Windows). Вам нужно запустить:

cat somecript.sh | tr -d '\r' > somescript2.sh

Убедитесь, что вы используете новое имя файла, как в моем примере (somescript2.sh). Вы можете прочитать это Сообщение блога для полной истории.