web-dev-qa-db-ja.com

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

助けてくれてありがとう

11
Sam Vanhoutte

おそらく、^M行の最後に改行(#!)があります。

#!行の形式は非常に厳密で、インタープリターが実際に/bin/bash^Mと呼ばれていない限り、改行は許可されません。

適切なUNIXエディターで作成されたファイルには、途中で改行しない限り、改行はありません。

すでにCRLF行末を使用している既存のファイルを編集すると、改行が非表示になる場合があります。たとえば、vimはそれを行います。ただし、ステータス行に[dos]と表示され、ファイルがDOS形式であることを警告しています。次に:set fileformat=unixと言い、ファイルを保存して変換できます。

22
user193597