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


12

このコマンド:chshは説明したように動作しないため、少なくとも新しいコマンドを学びました。

次のように機能すると説明されています。

  1. cat /etc/shells 知っておくべきことは、どのシェルがインストールされているかを知るためです。
  2. echo $SHELLあなたが使用しているシェルを知るために行います。
  3. シェルの1つを選択して入力 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

5
最初にログアウトして再度ログインする必要があります。
ルイFリベイロ2017年

7
端末テキストの画像を投稿しないでください。コピーして質問の本文に貼り付けることができます。グラフィックの不具合などを表示しているのでない限り、画像を投稿する必要はありません。
Sergiy Kolodyazhnyy


投稿を編集して画像を削除し、代わりにテキストを貼り付けましたが、画像は一晩で戻ってきました。
シャーカント2017年

@sharkant誰かがレビューキューで編集を行い、承認されたため、事後に投稿が編集されました。SE編集システムは新しい編集を古い編集システムで上書きしないと思いましたが、知っていますか?
Zan Lynx

回答:


19

ログアウトして再度ログインします。

chshコマンドが更新され/etc/passwdたファイルを、それは変更されません、現在のシェルもの値が$SHELL現在のシェル内の変数を(それはそれを行う方法がありません)。これが、再度ログインする必要がある理由です。変更を有効にするには、新しいログインセッションを開始する必要があります。


ログインシェルとは何か、またログインシェルなのか、ログインシェルでないのかを知る方法がわかりません。新しいログインセッションを開始するにはどうすればよいですか?
シャーカント2017年

1
@sharkant重要なのは、で変更した情報/etc/passwdは、次回ログインするまで読み取られないことです。完全にログアウトし、変更を有効にするために再度ログインする必要があります。これに失敗した場合、マシンの再起動も機能します。
クサラナンダ

1
今回は理解できたと思います。chsh-s / path / to / shellコマンドは、現在のシェルをすぐには変更しませんが、/ etc / passwd内のエントリを変更します。これは、シェルを起動したときに有効になりますか?
シャーカント19:46

@sharkantそれはまさにそれが機能する方法です!やっとあなたの誤解を理解できて嬉しいです。回答を更新します。
クサラナンダ

1

私の場合、usermodユーティリティコマンドを使用するとうまくいきました。ubuntu 18.04で実行しています。

  1. まず、現在の値を確認します

grep nameofuser /etc/passwd

  1. それを変更

sudo usermod --shell /bin/bash nameofuser

  1. 確認してください

grep nameofuser /etc/passwd

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.