Очень новичок в Debian (Raspbian), и я бьюсь над этим несколько дней. У меня есть сценарий запуска, который я хочу выполнить при запуске.
Я выполнил следующие команды, чтобы сделать скрипт исполняемым и добавить его с параметрами по умолчанию в последовательность запуска.
sudo chmod 755 /etc/init.d/testsam
sudo update-rc.d testsam defaults
При попытке протестировать скрипт я выполняю следующее:
sudo /etc/init.d/testsam start
Но при этом я получаю сообщение об ошибке: невозможно выполнить /etc/init.d/testsam: нет такого файла или каталога.
Я свернул сценарий до самого простого, но до сих пор не понимаю истинной причины. Надеюсь, кто-нибудь подскажет мне правильное решение? Это текущий сценарий.
#! /bin/bash
# /etc/init.d/testsam
case "$1" in
start)
#echo "starting script"
;;
stop)
#echo "stopping script"
;;
*)
#echo "Usage: /etc/init.d/testsam {start|stop}"
exit 1
;;
esac
exit 0
Спасибо за любую помощь
У вас наверняка есть возврат каретки (^M
) в конце вашего #!
линия.
Формат #!
строка очень строгая, и возврат каретки не допускается, если только ваш интерпретатор не вызывается /bin/bash^M
В файле, созданном с помощью подходящего редактора unix, никогда не будет возврата каретки, если вы не приложите все усилия, чтобы добавить их.
При редактировании существующего файла, в котором уже используются окончания строк CRLF, символы возврата каретки могут быть скрыты от вас. Например, это делает vim. Но это также говорит [dos]
в строке состояния, чтобы предупредить вас о том, что файл находится в формате DOS. Затем вы можете сказать :set fileformat=unix
и сохраните файл, чтобы преобразовать его.