БЕЛ в Bash / Zsh ПОДСКАЗКА - PullRequest
       20

БЕЛ в Bash / Zsh ПОДСКАЗКА

0 голосов
/ 18 февраля 2020

У меня есть следующий конфиг в моем .zshr c:

BEL=$(tput bel)
PROMPT+='%(?::$BEL)'

, который работает / работал в некоторой среде (всегда Cygwin на Windows), но в настоящее время не работает.

(То же поведение: не работает, в Bash в Ubuntu на Windows.)

Что не так?

1 Ответ

0 голосов
/ 18 февраля 2020

В 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
...