Shell
為什麼 $ 是使用者 shell 的預設符號而 # 是 root shell 的預設符號?
在伺服器上執行標準 bash shell,對於非 root 使用者,PS1 提示預設以 $ 結尾,對於 root 使用者以 # 結尾。
IE:
ubuntu@server:~$ sudo su root@server:/home/ubuntu#
為什麼是這樣?
從歷史上看,最初的 /bin/sh Bourne shell 將
$
用作普通提示符和#
root 使用者提示符(而 csh 將使用%
)。這使得很容易判斷您是否以超級使用者身份執行。
#
也是註釋字元,因此任何盲目重新輸入數據的人都不會執行任何實際命令。更現代的 shell(例如 ksh、bash)延續了這種區別,
$
儘管#
當您可以設置更複雜的值(例如使用者名、主機名、目錄)時它不太重要 :-)
傳統。
POSIX 標准說(我的重點):
PS1
此變數用於互動式提示。歷史上,“超級使用者”的提示是
#
. 由於權限不需要是單一的,因此很難定義哪些權限應該導致備用提示。但是,應該通過備用提示來提醒足夠強大的使用者該功能。另請參閱SuperUser 論壇上對幾乎相同問題的答案。