如何使zsh shell对“普通用户和超级用户”使用“ $和#”而不是“%和#”?
答案 0 :(得分:0)
就目前而言,当前已删除的自我解答是正确的。在提示符下,如果外壳程序的有效用户ID为0,则%(!.#.$)
将扩展为#
,否则将扩展为$
。
但是,请注意,如果当前提示类似于PS1='%(!.#.$) '
,则即使启动特权shell,即使将其导出,也可能不会保留PS1
的当前值。例如,在macOS上,默认的/etc/zshrc
文件显式设置PS1
的值,并丢弃您可能希望“继承”的任何值。
也就是说,我建议不要在提示中使用$
,因为它与Bourne-shell后代紧密相关,而Bourne-shell后代与标准的交互行为相去甚远。 zsh
提供了大量大量功能,这些功能是专门为交互式使用而设计的(与标准冲突),因此,%
提示符提供了很好的提醒。
答案 1 :(得分:0)
在 EUID
中检查 ~/.zshrc
(有效的用户ID):
if [[ $EUID == 0 ]]; then
PROMPT='# '
else
PROMPT='$ '
fi
答案 2 :(得分:0)
在~/.zshrc
中添加以下内容对我来说是成功的秘诀:
PROMPT='%(!.#.$) '
它以#
为根,以$
为根。