• ベストアンサー

bad interpreterで、シェルが使えません(T_T)

RedHat9ではよく以下のような胃の痛いような エラーがでます。 rootでシェルが実行できないのですが、 どうすれば実行できるでしょうか? ■1.shというシェルファイル #!/bin/sh /bin/touch 1 ■1.shを実行するとエラーになります。。 # ./1.sh : bad interpreter: そのようなファイルやディレクトリはありません ■cronでも動きません。。 /bin/bash: 1.sh: /bin/sh: bad interpreter: No such file or directory

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

/bin/shはありますか? シェルスクリプトの最初の行(#!で始まる行)は、インタープリタの指定を意味しています。 つまり、#!/bin/shと書けば、「このファイルは/bin/shをインタープリタとする」ということです。 なので、 "/bin/bash: 1.sh: /bin/sh: bad interpreter: No such file or directory" このエラーは、「/bin/bashが1.shを実行しようとしたが、/bin/shが無い」ということを意味しています(多分)。 RedHat9では、/bin/shは/bin/bashへのリンクなので、もし無ければ ln -s /bin/bash /bin/sh とすると良いでしょう。

php4
質問者

お礼

みなさまのおかげで 残るはそこかなと思いやってみたところ、解決しました!!ありがとうございます。 結局、SAMBAで作成したファイルの文字コードがSJIS だったのがいけないようです。vi でファイルを作り直した所、正常に動作しました。

その他の回答 (2)

回答No.2

$ touch 1 と実行することで、「1」というファイルがなければ、新規作成されます。 /bin/touch 1 touchコマンドは、/bin 配下にありますか? /usr/bin 配下にあるとか? # ./1.sh 1.shファイルに実行権はありますか?

php4
質問者

お礼

はい。全てあります。 難攻不落な問題です。。 さくらインターネットでもRedHat9が入っていて 以前、同じような問題があり解決できませんでした。。touchコマンドに限らずどのコマンドでも 同じ挙動です。。

  • lahalito
  • ベストアンサー率48% (31/64)
回答No.1

1.sh の中の /bin/touch 1 ↑ の "1" というファイルに対してtouchしてるようですが、カレントディレクトリに "1" というファイルが存在しないのではないでしょうか? % /bin/touch 1 で実行できますか?

php4
質問者

お礼

はい、1というファイルは存在しますし、 コマンドラインで実行もできます。 一応サーバー暦は実質2年ぐらいあるのですが、 本当、RedHat9だけこういう現象があって泣かされます。。あきらめてOS入れなおしでCentOSにしようかなぁ。。

関連するQ&A