Bash 中的 BEL / Zsh PROMPT
BEL in Bash / Zsh PROMPT
我的 .zshrc 中确实有以下配置:
BEL=$(tput bel)
PROMPT+='%(?::$BEL)'
在某些环境中 works/worked(总是在 Windows 上使用 Cygwin),但目前不再如此。
(相同的行为:不工作,在 Bash 上 Ubuntu 上 Windows。)
怎么了?
在 zsh
中,与 bash
不同,如果设置了 PROMPT_SUBST
选项,提示中嵌入的参数扩展只会在显示提示时展开。
%(...)
是一个 zsh
特定的转义序列,而 PROMPT
本身是一个 zsh
特定的名称,所以这在 [=13= 中不起作用],这需要像
这样的东西
PS1+='$(if test $? -ne 0; then tput bel; fi)'
(顺便说一句,如果启用了 PROMPT_SUBST
,它也可以在 zsh
中工作。如果当前 shell 是,则有条件地启用它的命令实际上是, zsh
,可能是
if [ -z "$ZSH_VERSION" ]; then
setopt PROMPT_SUBST
fi
我的 .zshrc 中确实有以下配置:
BEL=$(tput bel)
PROMPT+='%(?::$BEL)'
在某些环境中 works/worked(总是在 Windows 上使用 Cygwin),但目前不再如此。
(相同的行为:不工作,在 Bash 上 Ubuntu 上 Windows。)
怎么了?
在 zsh
中,与 bash
不同,如果设置了 PROMPT_SUBST
选项,提示中嵌入的参数扩展只会在显示提示时展开。
%(...)
是一个 zsh
特定的转义序列,而 PROMPT
本身是一个 zsh
特定的名称,所以这在 [=13= 中不起作用],这需要像
PS1+='$(if test $? -ne 0; then tput bel; fi)'
(顺便说一句,如果启用了 PROMPT_SUBST
,它也可以在 zsh
中工作。如果当前 shell 是,则有条件地启用它的命令实际上是, zsh
,可能是
if [ -z "$ZSH_VERSION" ]; then
setopt PROMPT_SUBST
fi