!!!技術的雑談-shellscriptでのbad interpreter !!環境 OS:FreeBSD5.4、Fedora Core3、White Box Linuxなど shell:bash いや、多分Unix系のshellならどれでもだと多分思う。 !!現象 Shell Scriptを起動すると : bad interpreter: そのようなファイルやディレクトリはありません と、出てきてShellが動かない。 場合によると、lessやcatで表示しても何も異常は無い。 もしくは、全ての行末に「\」が付いていたりする。 Windows上で編集していたりする。 samba経由でFileをUnixに送っている。 FTPクライアントで「テキスト/バイナリー」モードの設定を「オート」で送信していたりする。 !!原因 Shell Script Fileの改行コードがWindowsのもの(CR+LF)になっている。 (UnixではLFだけ。) そのため、bashがShell Scriptの最初の行の「#!/〜」の行を正しく判別できない。 !!対処 エラーを起しているShell Script Fileの改行コードをUNIXのものに変換してやる。 nkfなどでも変換できるが、perlが使えるなら、 cp shellfile.sh shellfile.sh.org perl -pe 's/\r\n/\n/' shellfile.sh.org > shellfile.sh rm shellfile.sh.org でも変換できる。 参照:[[改行コード変換|技術的雑談-改行コード変換]] !!履歴 2005/8/26 -- 初版 [[技術的雑談]]へ戻る !!突っ込み {{comment}} [[技術的雑談]]へ戻る {{trackback}} [[技術的雑談]]へ戻る