
我在嵌入式 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
為了獲取 shell,並且 shell 自動打開。
當我從 shell 運行完全相同的安裝命令時,它起作用了。/bin/mount
是到 的符號連結/bin/busybox
。
為什麼我的腳本找不到/bin/mount
?
答案1
事實證明,文件中的空格實際上是兩個字符,0xD0 0xA0
(Unicode?也許這只是巧合,那些看起來像CR/LF 左移4 位......它們也顯示為單個空白字符,而不是兩個個)。一條線索就是錯誤訊息 - 它應該只顯示命令,而不是參數,但該行中沒有任何空格。
當我發現這一點後,我意識到可能是什麼原因。我的作業系統是 Windows 7,我在 VirtualBox VM 中執行 Ubuntu,並且使用共用剪貼簿。我從 Windows 7 上的 Chrome 中的網頁複製了該腳本,並將其貼到 Ubuntu 上的 gedit 中。這些字元要么是從網頁複製的,要么是從頁面到 gedit 的編碼方式無法正確播放。
用空格字元替換那些就解決了。