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(そうすることはできません)。これがすぐにログインする必要がある理由です。変更を適用するには、新しいログインセッションを開始する必要があります。

答え2

使用ユーザーモード私の場合、ユーティリティコマンドが機能します。 Ubuntu 18.04で実行中です。

  1. まず、現在の値を確認してください。

grep nameofuser /etc/passwd

  1. 変化

sudo usermod --shell /bin/bash nameofuser

  1. 確認してください

grep nameofuser /etc/passwd

関連情報