echo $SHELL は、デフォルトシェルを zsh に変更した後でも、「/bin/bash」を出力として表示します。

echo $SHELL は、デフォルトシェルを zsh に変更した後でも、「/bin/bash」を出力として表示します。

デフォルトのシェルを変更するためにこの回答を参照しました。デフォルトのシェルをZSHに変更する方法 - chshに「無効なシェル」が表示されます。

zshを追加し/etc/shellsて実行した後にsudo chsh -s "$(command -v zsh)" "${USER}"実行しましたecho $SHELL(ところで出力がないので正常に実行されたと思いました)。/bin/bash

シェルを閉じて新しいシェルセッションを開き、zshが表示されたので、再起動すると問題が解決したと思いました。その後、echo $SHELLzshセッションで実行しても同じ出力が表示され、/bin/bash``$SHELL --version代わりにbashバージョンも提供されました。 zsh ワン

ctrl+alt+t を行うたびに zsh セッションが発生しますが、このecho $SHELL出力は疑わしいです。

アップデート:私はUbuntu Budgie 18.04.3を実行しており、次/bin/zshから始めました。echo $0

ベストアンサー1

SHELL環境変数は、ログアウトして再ログインしたり、フルログインを実行したり、他のコマンドを使用したりsu - "$USER"するssh "$USER@localhost"など、フルログインを実行する場合にのみ設定されます。

通常、loginプログラムはデータベース内のユーザーログインシェルの内容に基づいてこの変数を設定しますpasswd。プロセスがユーザーのログイン要求を受け入れるたびに(たとえば、などを介してsshd)、gdmこれはログインプロセスの一部と呼ばれます。

login(1)Ubuntuのマニュアルから:

ユーザーとグループIDは/etc/passwdファイルの値に基づいて設定されます。$HOME、、、$SHELLおよび$PATH$LOGNAME$MAIL、パスワードエントリの対応するフィールドに従って設定されます。 Ulimit、umask、nice の値も GECOS フィールドの項目に基づいて設定できます。

単に新しいシェルセッションを開始すると、シェルが「ログインシェル」で始まっても、この変数の値は設定されません。

おすすめ記事