chshコマンドを使用してシェルを変更できないのはなぜですか?

chshコマンドを使用してシェルを変更できないのはなぜですか?

私は新しい命令を学びました。少なくともそう思います。なぜなら、このコマンドは説明chshされたものとは異なる動作をするからです。

次のように動作するものとして説明します。

  1. cat /etc/shellsどのシェルがインストールされているかを調べ、その中から選択できます。
  2. echo $SHELLどのシェルを使用しているかを確認してください。
  3. シェルを選択して入力します。chsh -s /path/to/shell
  4. パスワードを入力し、 をecho $SHELL使用して新しいシェルに存在することを確認します。

これを行いましたが、パスワードを入力してもエラーメッセージは表示されませんが、まだ同じシェルにあります。

% echo $SHELL
/bin/bash
% cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
% chsh -s /bin/sh
Password: 
% echo $SHELL
/bin/bash

ベストアンサー1

ログアウトしてもう一度ログインしてください。

このchshコマンドはファイルを更新します/etc/passwdが、変更はしません。現在のシェルは現在、シェルの変数値でもありません$SHELL(そうすることはできません)。これがすぐにログインする必要がある理由です。変更を適用するには、新しいログインセッションを開始する必要があります。

おすすめ記事