Shell

為什麼 $ 是使用者 shell 的預設符號而 # 是 root shell 的預設符號?

  • December 23, 2020

在伺服器上執行標準 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 論壇上對幾乎相同問題的答案。

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