为普通/超级用户自定义zsh提示?

时间:2019-11-12 02:50:13

标签: zsh zshrc

如何使zsh shell对“普通用户和超级用户”使用“ $和#”而不是“%和#”?

3 个答案:

答案 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='%(!.#.$) '

它以#为根,以$为根。