在 zsh 中,您可以%#
在您的PS1
(或任何PROMPT
变量)中添加一个,这基本上意味着显示%
用户或显示#
根。我想知道是否有任何方法可以影响此问题,以便%
或#
改变颜色取决于它是用户还是根(红色代表根,蓝色代表用户),明显的方法就是改变PS1
我的根中的~/.zshrc
,但考虑到这已经是一个特殊的符号,我想知道是否没有一种方法可以PS1
对两者使用相同的符号...特定%#
于 zsh 的东西(我确信还有其他我可以做的黑客,比如if then 语句)。
答案1
%(!.%{\e[1;31m%}%m%{\e[0m%}.%{\e[0;33m%}%m%{\e[0m%})
那应该%m
如果您是 root,请尝试将主机名 ( ) 更改为不同的颜色(红色)。我没有 zsh shell 来测试它,但它看起来是正确的。
原因如下:
%(x.true.false)
:: 根据三元组第一项的评估,执行正确的语句。 '!'如果 shell 具有特权,则为 true。其实%#
就是一个捷径%(!.#.%)
。
%{\e[1;31m%} %m %{\e[0m%}
::%{\e[X;Ym%}
是颜色转义序列,其中 X 作为格式(粗体、下划线等),Y 作为颜色代码。请注意,您需要围绕要更改颜色的术语打开和关闭序列,否则该点之后的所有内容都将是任何颜色。%m
为了清楚起见,我在提示术语周围添加了空格。
http://www.nparikh.org/unix/prompt.php围绕颜色表以及 zsh 的其他可用选项有更多选项和详细信息。
答案2
autoload colors
colors
PS1="%~ %{%(#~$fg[red]~$fg[blue])%}%#%{$fg[default]%} "
%(#
测试 shell 是否以 root 身份运行。更改此设置以%(!
测试 shell 是否以提升的权限运行(涵盖诸如 之类的内容newgrp
,但不以 root 身份登录)。