zsh 使用 `sudo su` 时提示丢失自定义

zsh 使用 `sudo su` 时提示丢失自定义

我当前的 zsh 提示符是:

prompt='%F{013}%2~%f$(git_super_status)%(?.%F{004}.%F{001}✕%?)$ %f'

它看起来像:

Documents/multi-git-status:master↑5●2✚1…$ 

然而,当我使用它时,sudo su它变成了blueray-PC#

Documents/multi-git-status:master↑5●2✚1…$ sudo su
[sudo] password for blueray:   
blueray-PC# 

为什么会发生这种情况?

答案1

sudo su已被弃用,并且确实会弄乱您的环境。代替
使用sudo -i

(这还有一个优点,它可以在没有 的系统上工作su

编辑:我忘了一件事: 在末尾
添加export PS1="%F{013}%2~%f$(git_super_status)%(?.%F{004}.%F{001}✕%?)$ %f"
/root/.zshrc

答案2

我在 macOS Catalina 中遇到了这个问题sudo -s,直到我意识到:

  • sudo -s启动交互式 shell,因此它使用 zshenv 和 zshrc 配置文件,而不是 zprofile 和 zlogin
  • 在 macOS 中,/etc/zschrc 将设置提示符,因此您唯一可以覆盖的机会是使用 .zshrc。
  • 即使您获得了 root shell,使用 sudo -s 也会从您自己的主目录(而不是 /var/root)读取用户配置文件。

相关内容