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
と言い、ファイルを保存して変換できます。