Bash 提示符的用户模式符号

Bash 提示符的用户模式符号

我试图找到名称/差异/Bash 入口行提供的提示符所调用的符号。

例如:user@user~$ $ 叫什么,为什么在某些系统上是 user % 而不是 $?这是一个可以更改的设置吗?

我从 Cisco IOS 的角度思考这个问题,在 >(用户)到 #privileged exec 之间。这些符号在那里有其用途,那么它们在 *Nix 系统上有什么用途呢?

答案1

我不确定这个角色有名字;它传统上用于指示您是否是rootroot(#意味着您是root,$或者%意味着您不是)。$用于 Bourne 风格的 shell(包括 Bash),%用于 C shell 和 Zsh。在 Zsh 中,定义稍微宽一些:如果您是或已经提高了 POSIX 功能,#则会显示。root

您的提示定义决定是否出现:在重击中,\$在提示定义中被替换为#or $,在 Zsh 中,%#被替换为#%。您可以通过使用扩展版本 来在 Zsh 中使用其他字符%(!.#.%%)

为什么 $ 是用户 shell 的默认符号,而 # 是 root shell 的默认符号?有更多信息。

答案2

man bash

提示 当交互执行时,bash 在准备好读取命令时显示主提示符 PS1,在需要更多输入来完成命令时显示辅助提示符 PS2。 Bash 允许通过插入一些反斜杠转义的特殊字符来自定义这些提示字符串,这些字符的解码如下:

...

  • \$ 如果有效 UID 为 0,则为 #,否则为 $

因此,它被硬编码在bash*.这可能同样适用于其他 shell。我记得在 80 年代非常古老的 unice 上它曾经是%.现在csh使用%


* 您当然可以自定义 PS1,但没有此内置功能来根据 UID 使用一个或另一个字符

相关内容