トップ 一覧 検索 ヘルプ RSS ログイン

技術的雑談-shellscriptでのbad interpreterの変更点

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

[[技術的雑談]]へ戻る