В zsh
, в отличие от bash
, расширения параметров, встроенные в приглашение, раскрываются только при отображении приглашения, если установлена опция PROMPT_SUBST
.
%(...)
- это zsh
-specifi c escape-последовательность, а само PROMPT
- это имя zsh
-specifi c, так что это не будет работать в bash
, для чего потребуется что-то вроде
PS1+='$(if test $? -ne 0; then tput bel; fi)'
( который, кстати, также работал бы в zsh
, предполагая, что PROMPT_SUBST
был включен. Команда, которая включала бы его условно, если текущая оболочка, на самом деле, zsh
, могла бы быть
if [ -z "$ZSH_VERSION" ]; then
setopt PROMPT_SUBST
fi