SHELL環境変数はデフォルトのシェルの値を返し続けます

SHELL環境変数はデフォルトのシェルの値を返し続けます

私は、bash をデフォルト シェルとしてターミナル エミュレータを使用しています。環境変数 SHELL の値を出力して現在のシェルを出力しましたが、zshell などの別のシェルを入力すると、デフォルトのシェルの最初の値が返され続けます。
現在使用しているシェルの値を出力させるにはどうすればよいですか?

$ echo $SHELL 
/bin/bash

$ zsh 
unixnode% 

$ unixnode% echo $SHELL 
/bin/bash

答え1

ログインシェルでログインすると、シェル変数はそのシェルに割り当てられます。
現在のログインシェルセッション内から zsh を実行するなど、非ログインシェルを使用した場合は常に、変数 Shell の値は変わりませんが、他のシェルに変更したい場合は、ログアウトして他のシェルに再度ログインする必要があります。

答え2

現在使用しているシェルの値を印刷するにはどうすればいいですか

シェルによって異なります。POSIXタイプのシェルの場合は、$0

$ bash -c 'echo $SHELL; echo $0'
/usr/local/bin/fish
bash

$ /bin/bash -c 'echo $SHELL; echo $0'
/usr/local/bin/fish
/bin/bash

$ zsh -c 'echo $SHELL; echo $0'
/usr/local/bin/fish
zsh

$ ksh  -c 'echo $SHELL; echo $0'
/usr/local/bin/fish
ksh

$ dash  -c 'echo $SHELL; echo $0'
/usr/local/bin/fish
dash

bashのマニュアルには$SHELLについて言うと

異なる貝殻の興味深い点初期化する$シェル

$ unset SHELL; bash -c 'echo $SHELL'
/usr/local/bin/fish

$ unset SHELL; ksh -c 'echo $SHELL'
/bin/sh

$ unset SHELL; zsh -c 'echo $SHELL'


$ unset SHELL; dash -c 'echo $SHELL'


$ unset SHELL; fish -c 'echo $SHELL'


$ unset SHELL; tcsh -c 'echo $SHELL'
SHELL: Undefined variable.

関連情報