Ich versuche herauszufinden, ob die Person, die mein Skript ausführt, eine Bash-Shell oder Zsh (oder Gitbash) verwendet.
Ich dachte, ich könnte so etwas machen:
if [ $SHELL == *"zsh"* ]; then
THIS_SHELL="zsh"
elif [ $SHELL == *"bash"* ] || [ $0 = "/usr/bin/bash" ]; then
THIS_SHELL="bash"
fi
Aber eines verstehe ich nicht:
ALT02884% echo $SHELL
/bin/zsh
ALT02884% if [ $SHELL == *"zsh"* ]; then
then> echo "yes"
then> else
else> echo "no"
else> fi
zsh: = not found
Was geht hier vor sich?
Antwort1
Sieht aus, als müsste ich meinem Test noch ein weiteres Paar eckiger Klammern hinzufügen:
if [[ $SHELL == *"zsh"* ]]; then
THIS_SHELL="zsh"
elif [[ $SHELL == *"bash"* ]]; then
THIS_SHELL="bash"
fi
Hier ist eine Erklärung: https://stackoverflow.com/a/13542854/226473