web-dev-qa-db-ja.com

デフォルトのルートシェルとしてではなく、Sudoコマンドを使用するときにZSHを使用するにはどうすればよいですか?

そのため、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を置き換えることができる単純なエイリアスを作成し、実行するコマンドのプレフィックスを付けることです。

ヒントはありますか?

3
aklmie

私はzshユーザーではありませんが、シェルが.zshrcファイルを読み取っていないため、Sudo zsh -c test1は失敗しています。これを試して:

Sudo zsh -ic test1

これは、これが対話型シェルにあることをzshに伝えるはずなので、.zshrcファイルを入手します。

3
glenn jackman