Нет такой ошибки файла или каталога при попытке запустить скрипт запуска в Debian

Очень плохо знаком с 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

Спасибо за любую помощь

1 ответ

Решение

У вас наверное возврат каретки (^Mв конце вашего #! линия.

Формат #! Строка очень строгая, и возврат каретки там не разрешен, если ваш переводчик на самом деле не вызван /bin/bash^M

В файле, созданном с помощью надлежащего редактора Unix, никогда не будет возврата каретки, если только вы не добавите их.

При редактировании существующего файла, который уже использует окончания строки CRLF, возврат каретки может быть скрыт от вас. Например, vim делает это. Но это также говорит [dos] в строке состояния, чтобы предупредить вас, что файл в формате DOS. Вы можете тогда сказать :set fileformat=unix и сохраните файл, чтобы преобразовать его.

Другие вопросы по тегам