スクリプト内のコマンドは「見つかりません」というエラーで失敗しますが、コマンド ラインでは正常に実行されます。

スクリプト内のコマンドは「見つかりません」というエラーで失敗しますが、コマンド ラインでは正常に実行されます。

私は組み込み ARM デバイス上に、Linux カーネルと Busybox、および initrd イメージ内の最小限のファイルシステムのみで構成される最小限の環境を作成しました。起動時にinittab実行される があります。/etc/init.d/rcS

に次の行がありますrcS:

/bin/mount -t proc none /proc

しかし、このラインが走ると、

/etc/init.d/rcS: line 2: /bin/mount -t proc none /proc: not found

の最後の行はrcS実行されるように見えます。その行は単に/bin/shシェルを取得するためのもので、シェルは自動的に開きます。

シェルからまったく同じマウント コマンドを実行すると、動作します。/bin/mountはへのシンボリック リンクです/bin/busybox

スクリプトが を見つけられないのはなぜですか/bin/mount?

答え1

結局のところ、ファイル内のスペースは実際には 2 つの文字でした0xD0 0xA0(Unicode でしょうか? CR/LF が 4 ビット左にシフトしたように見えるのは単なる偶然かもしれません... また、2 つではなく 1 つの空白文字として表示されます)。すぐに手がかりとなったのはエラー メッセージでした。パラメーターではなくコマンドのみが表示されるはずでしたが、行に空白がありませんでした。

それを発見すると、原因が何であるかがわかりました。私の OS は Windows 7 で、VirtualBox VM で Ubuntu を実行しており、共有クリップボードを使用しています。Windows 7 の Chrome で Web ページからスクリプトをコピーし、Ubuntu の gedit に貼り付けました。これらの文字は Web ページからコピーされたか、ページから gedit への途中でエンコードが正しく機能しなかったかのどちらかです。

それらをスペース文字に置き換えることで解決しました。

関連情報