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它,并为我想要运行的命令添加前缀。
有什么提示吗?
我不是 zsh 用户,但sudo zsh -c test1失败是因为 shell 尚未读取您的 .zshrc 文件。尝试这个:
sudo zsh -ic test1
Run Code Online (Sandbox Code Playgroud)
这应该告诉 zsh 这是在交互式 shell 中,因此请获取 .zshrc 文件。