Linux

程序欄位中的 inittab ‘-’ 字元

  • October 11, 2012

我有一個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"

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