技術的雑談-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 -- 初版
技術的雑談へ戻る