为什么 $ 是用户 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

该变量用于交互式提示。从历史上看,“超级用户”的提示是#.由于权限不需要是整体的,因此很难定义哪些权限应导致备用提示。然而,应该通过替代提示来提醒足够强大的用户该权力。

也可以看看这个答案在超级用户论坛上几乎有同样的问题。

相关内容