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

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

在伺服器上操作標準 bash shell,PS1 提示字元預設以 $ 結尾(對於非 root 使用者),以及 # 對於 root 使用者。

IE:

ubuntu@server:~$ sudo su
root@server:/home/ubuntu#

為什麼是這樣?

答案1

從歷史上看,原始的 /bin/sh Bourne shell 將用作$普通提示符和#root 使用者提示符(csh 將使用%)。這使得很容易判斷您是否以超級用戶身份運行。

#也是註釋字符,因此任何盲目重新輸入資料的人都不會運行任何真正的命令。

更現代的 shell(例如 ksh、bash)繼續這種區別$#儘管當您可以設定更複雜的值(例如使用者名稱、主機名稱、目錄)時,它不太重要:-)

答案2

傳統。

POSIX 標準說(我的重點):

PS1

此變數用於互動式提示。從歷史上看,「超級用戶」的提示是#.由於權限不需要是整體的,因此很難定義哪些權限應導致備用提示。然而,應該透過替代提示來提醒足夠強大的用戶該權力。

也可以看看這個答案在超級用戶論壇上幾乎有同樣的問題。

相關內容