Linux
程序欄位中的 inittab ‘-’ 字元
我有一個
inittab
包含以下條目的文件:console::askfirst:-/bin/ash
根據此手冊頁,流程欄位中的“+”字元表示
init不會對該程序進行 utmp 和 wtmp 核算。
但是,它沒有說明“-”字元。流程欄位中的“-”字元有什麼作用?
連字元似乎是 Busybox 特有的功能(就像“askfirst”一樣,這就是我發現您正在使用 Busybox 的方式)。範例 inittab文件說:
# /bin/sh invocations on selected ttys # # Note below that we prefix the shell commands with a "-" to indicate to the # shell that it is supposed to be a login shell. Normally this is handled by # login, but since we are bypassing login in this case, BusyBox lets you do # this yourself... # # Start an "askfirst" shell on the console (whatever that may be) ::askfirst:-/bin/sh
因此,它將 shell 作為登錄 shell 啟動(通過開始 argv
$$ 0 $$帶連字元)。登錄外殼的含義超出了這個問題的範圍,但它通常至少意味著它將執行不同的啟動文件(即
~/.profile
)。 在 argv 中使用連字元的約定$$ 0 $$,而不是正確的命令行標誌,告訴 shell 它是一個登錄 shell,是一個古老的約定 - 它至少可以追溯到第二版 UNIX。(argv$$ 0 $$在第六版之前只是
"-"
用於登錄 shell,然後改為"-/bin/sh"
)