zsh をルートのデフォルトシェルとして設定

zsh をルートのデフォルトシェルとして設定

root としてログインしているときに、zsh をデフォルトのシェルとして設定できますか? 設定してchsh -s /bin/zsh、認証に root パスワードを使用しましたが、失敗しました。

答え1

コツとしては、対話型ルート シェルで zsh を使用するように設定し、非対話型シェルでは引き続き /bin/sh を使用するようにすることです。

これは、他の回答で説明されているように「期待」の問題につながる可能性がありますが、少なくとも非対話型プロセスが破綻することはありません。

/root/.bashrcの末尾に以下を追加します。

if [ ! -z "$PS1" ]; then
    exec /bin/zsh $*
fi 

答え2

一般的に、ルートシェルを /bin/sh から変更するのはよくありません。UID が 0 のままでシェルが zsh である別のアカウント (例: zroot) を追加する方がよいでしょう。ただし、質問への回答として、root としてログインしている場合は を使用する必要はありませんsudo。 を使用するだけです。

chsh -s /bin/zsh root

rootchsh からの要求に応じてパスワードを入力します。「root」を明示的に指定する価値があります。

「fred」としてログインする場合は、

sudo -i

パスワード要求にfred'spassword で応答します。これで root シェルが取得できます。最初に root としてログインした場合と同じように続行します。

/bin/zsh が /etc/shells にリストされていることを確認します。

答え3

おそらく、ルートで実行するのを忘れたのでしょう。次のコマンドを実行してください。

$ sudo chsh -s /bin/zsh

答え4

通常のエディタでpasswdファイルを編集することは、この用途には推奨されません。

vipw

そしてシェルを zsh に変更します。正直に言って、なぜルート シェルを変更したいのか理解できません。ルート アカウントは管理目的のみに使用し、通常の作業には権限のないユーザーを使用してください。その後、現在の tty から切断せずに (これは重要です) 他の tty にログインしてみます。うまくいけば、新しいシェルが表示されます。すぐに zsh を使用する場合は、単に zsh と入力します。結論

I want to use my new shell now = type zsh
I want to use my new shell + change = chsh -s or vipw

ps= zsh がこれらのパス (/bin /sbin など) にインストールされておらず、root で単一ユーザー ログインを行う必要がある場合、シェルが見つからないため動作しません。これは、/usr が root から分離されているか、他の lvm またはパーティションにマウントされているシステムでも発生する可能性があります。

関連情報