$SHELLの使い方は?

$SHELLの使い方は?

私のスクリプトを実行している人が bash シェルを使用しているのか、zsh (または gitbash) を使用しているのかを判断しようとしています。

私は次のようなことができると考えました:

  if [ $SHELL == *"zsh"* ]; then
    THIS_SHELL="zsh"
  elif [ $SHELL == *"bash"* ] || [ $0 = "/usr/bin/bash" ]; then
    THIS_SHELL="bash"
  fi

しかし、理解できないことがあります。

ALT02884% echo $SHELL
/bin/zsh
ALT02884% if [ $SHELL == *"zsh"* ]; then
then> echo "yes"
then> else
else> echo "no"
else> fi
zsh: = not found

ここで何が起こっているのですか?

答え1

テストに別の角括弧のセットを追加する必要があったようです:

if [[ $SHELL == *"zsh"* ]]; then
    THIS_SHELL="zsh"
  elif [[ $SHELL == *"bash"* ]]; then
    THIS_SHELL="bash"
  fi

説明は次のとおりです。 https://stackoverflow.com/a/13542854/226473

関連情報