当我使用 sudo 命令但不将其作为默认 root shell 时,如何使用 ZSH?

当我使用 sudo 命令但不将其作为默认 root shell 时,如何使用 ZSH?

因此,我想将其保留bash为 root 的默认 shell。

zsh但是,当我运行命令时,我更喜欢使用我的 shell,sudosudo也会执行 /root 中的 .zshrc。

/root/.zshrc为了测试目的,我在我的and中创建了一个别名~/.zshrc

alias test1='echo "Test OK"'

现在,当我跑步时sudo su enter zsh enter test1 enter

我得到了预期的结果:Test OK

但是,所有这些命令都会导致:test1: command not found

sudo test1
sudo su -c 'zsh -c test1'
sudo -E zsh -c 'test1'
sudo ZDOTDIR=/root/.zshrc test1
sudo ZDOTDIR=/root/.zshrc zsh -c 'test1'
sudo ZDOTDIR=/root/.zshrc zsh -c 'source /root/.zshrc && test1'

我发现askubuntu 上的这个问题,但我认为这更与Unix 和 Linux 上的这个

然而,这些帖子都对我没有任何帮助。

我最终想要实现的是创建一个简单的别名,sudo当我想要使用zsh其 /root/.zshrc 文件时可以替换它,并在我想要运行的命令前面加上前缀。

有什么提示吗?

答案1

我不是 zsh 用户,但sudo zsh -c test1失败了,因为 shell 尚未读取你的 .zshrc 文件。试试这个:

sudo zsh -ic test1

这应该告诉 zsh 这是在交互式 shell 中,因此请获取 .zshrc 文件。

相关内容