私は、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.