そのため、bash
をルートのデフォルトシェルとして保持したいと思います。
しかし、zsh
コマンドを実行するときは、シェルのSudo
を使用することをお勧めします。また、Sudo
は/ rootの.zshrcも実行します。
テストのために、/root/.zshrc
および~/.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のこの質問 を見つけましたが、これは nixおよびLinuxのこの問題 に関連していると思います。
しかし、これらの投稿はどれも私を助けてくれません。
最終的に達成したいのは、Sudo
を/root/.zshrcファイルで使用するときにzsh
を置き換えることができる単純なエイリアスを作成し、実行するコマンドのプレフィックスを付けることです。
ヒントはありますか?
私はzshユーザーではありませんが、シェルが.zshrcファイルを読み取っていないため、Sudo zsh -c test1
は失敗しています。これを試して:
Sudo zsh -ic test1
これは、これが対話型シェルにあることをzshに伝えるはずなので、.zshrcファイルを入手します。