- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!!!技術的雑談-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}}
[[技術的雑談]]へ戻る