Как использовать $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

Связанный контент