Shell
從 inittab 在指定目錄中啟動 sh
我目前正在研究嵌入式 Linux 系統。為了讓它與我們的其他產品相似,我需要讓它在啟動時在指定目錄中啟動一個 shell,可以使用串列埠訪問。
為此,我在 inittab-script 中有這一行:
::respawn:-/bin/sh
到目前為止,這是有效的,只是 shell 以 / 的密碼啟動,而不是 /mnt/flash。
我能想出的唯一方法是讓它不啟動 /bin/sh 而是像這樣的腳本:
#!/bin/sh cd /mnt/flash /bin/sh
有沒有辦法在沒有第二個腳本的情況下在 inittab 中內聯?
編輯:我需要這是一個登錄腳本。這就是
-
前面的/bin/sh
意思。如果我只是執行::respawn:/bin/sh -c "cd /mnt/flash;exec /bin/sh"
它確實會按預期更改文件夾,但我沒有得到導致其他問題的登錄 shell。如果我執行它,
::respawn:-/bin/sh -c "cd /mnt/flash;exec /bin/sh
我會收到此錯誤:/bin/sh: exec: line 1: -/bin/sh: not found
您可以給 shell 一些參數,以便它開始時略有不同。例如。
/bin/sh -c "cd /mnt/flash;exec /bin/sh"
從
-c
which 開始將執行以下字元串中的命令。第一個命令是目錄更改,隨後
exec
將啟動一個新的外殼程序(在同一程序中),該外殼程序現在在您想要的目錄中啟動。更新:
如果正在使用busybox shell,則啟動登錄shell 會出現問題,因為busybox 不接受該
-l
選項。在執行例如之前,使用 dot.
命令從您的配置文件中獲取命令exec
/bin/sh -c "cd /mnt/flash;. /etc/profile;exec /bin/sh"