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

akl*_*mie 6 command-line bash sudo zsh

所以,我想保留bashroot 的默认 shell。

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

/root/.zshrc出于测试目的,我在 my和中创建了一个别名~/.zshrc

alias test1='echo "Test OK"'
Run Code Online (Sandbox Code Playgroud)

现在,当我跑步时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'
Run Code Online (Sandbox Code Playgroud)

在askubuntu上发现了这个问题,但我认为这与Unix和Linux上的这个问题更相关。

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

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

有什么提示吗?

gle*_*man 5

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

sudo zsh -ic test1
Run Code Online (Sandbox Code Playgroud)

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