コマンドの前に bash が付いていないと、ターミナルは「bash: /usr/bin/(command) /bin/bash: bad interpreter: No such file or directory」というエラーを返します。

コマンドの前に bash が付いていないと、ターミナルは「bash: /usr/bin/(command) /bin/bash: bad interpreter: No such file or directory」というエラーを返します。

この特定のエラーを Web で調べると、すべてシェル スクリプトに関するものでした。ターミナル自体でこのエラーが繰り返し発生し、このためレスキュー モードで起動しないとホーム サーバーがまったく使用できなくなっています。ログイン画面にバグがあり、正しいパスワードにも間違ったパスワードにも反応しません。起動時に多数の [FAILED] 行も表示されます。

これは、特定のユーザーを「chroot jail」で構成し、rbash に設定したときに始まりましたが、残念ながら、構成時に使用したコード行が失われ、再起動時に完全な災害が発生しました。

レスキュー モードで「ldd /usr/bin/bash」などのコマンドを送信すると、エラーが返されます。ただし、一部の基本コマンドではこのエラーは発生しません (おそらく /bin/sh でスタックしているのでしょうか? 「$SHELL」はレスキュー モードで /bin/sh を返します)

ldd /usr/bin/bash
bash: /usr/bin/ldd: /bin/bash: bad interpreter: No such file or directory

しかし、コマンドの前に bash を付けると、正しく返されることがわかりました。たとえば、"バッシュldd <オプション"

bash ldd /usr/bin/bash
<relevant correct data>

非常に奇妙です。すべてのユーザーのシェルを /bin/bash に設定しましたが、何も起こりません。私はホームサーバーに比較的慣れていないので、いくつかの基本的なスクリプトを作成し、それを crontab などにセットして、ネットワークの外部から ssh できるようにする知識はありました。しかし残念ながら、私は chroot jail の設定について十分な知識がなく、それが引き起こす大混乱を過小評価していました。このチュートリアルそして、監禁されたユーザーにライブラリをコピーしたところで、再起動時にサーバーが機能しなくなったことに気付きました。ログがないことを再度お詫びします。そのようなことは予想しておらず、実際に実行されたことをコピーして貼り付けていなかったためです。

ありがとう。

答え1

解決しました。

それは単に bin に関する壊れたシンボリックリンクでした。正しい方向を示してくれた davidgo に感謝します。それは bash ではなく、bin だったと思います。別のユーザーもこれについてコメントしていましたが、削除されていました。誰であれ、そのコメントをくれた人に感謝します。

修正:

ln -s usr/bin bin

関連情報