質問: シェルスクリプト実行で”そのようなファイルやディレクトリはありません”と出ます。 以下の単純なシェルスクリプトを実行しようとしています。 ------------------- #!/bin/sh echo ok ------------------- そのとき、 bad interpreter: そのようなファイルやディレクトリはありません と出てしまいます。 ・which sh で確認すると /bin/sh です。 ・windowsで作ったファイルをftpのアスキーモードで転送しています。 (ものすごく単純なミスをしてるのかもしれませんが、) よろしくお願いします。
回答: ぱっと思いつく原因は2つ 例えばfile名が test.sh だとして 1. windowsと違ってカレントディレクトリは通常pathが通っていませんので test.shの有るディレクトリから実行させる場合も $ test.sh <=これだと駄目 $ ./test.sh <=これならok 2.アスキーモードで転送したはずがうっかり間違えていた この場合 1行目のshebang文は #!/bin/sh\r\n となり /bin/sh[cr]を探しに行きますが当然有りませんので エラーになります これを確認するためにはコマンドラインで $ od -c ./test.sh と打つと 0000000 # ! / b i n / s h \n e c h o o 0000020 k \n これならokですが \r が入っていれば windows用の改行コードのままです。