Shell

從 inittab 在指定目錄中啟動 sh

  • June 30, 2015

我目前正在研究嵌入式 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"

-cwhich 開始將執行以下字元串中的命令。

第一個命令是目錄更改,隨後exec將啟動一個新的外殼程序(在同一程序中),該外殼程序現在在您想要的目錄中啟動。

更新:

如果正在使用busybox shell,則啟動登錄shell 會出現問題,因為busybox 不接受該-l選項。在執行例如之前,使用 dot.命令從您的配置文件中獲取命令exec

/bin/sh -c "cd /mnt/flash;. /etc/profile;exec /bin/sh"

引用自:https://unix.stackexchange.com/questions/213060