Ответ Кусалананды хорош, но на всякий случай, если кто-то решит export BASH_VERSION
перед вызовом ksh (, таким образом обманув тест ), вы могли бы вместо этого проверить значение$0
:
case "$0" in
(*ksh) PS1="ksh version" ;;
(*bash) PS1="bash version" ;;
(*) PS1="default version" ;;
esac
Этот тест не безошибочен; если вы ln -s /bin/bash /tmp/bashksh
, а затем вызовете /tmp/bashksh
, приведенный выше код ложно укажет, что вы используете ksh.