【问题标题】:BEL in Bash / Zsh PROMPTBEL / Zsh PROMPT 中的 BEL
【发布时间】:2020-02-18 16:20:56
【问题描述】:

我的 .zshrc 中有以下配置:

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

这在某些环境中有效/有效(在 Windows 上总是 Cygwin),但目前不再有效。

(相同的行为:在 Windows 上的 Ubuntu 上的 Bash 中不起作用。)

怎么了?

【问题讨论】:

  • 确保PROMPT_SUBST 选项已启用。
  • 我从没想过它会在 bash 中工作; %(x.true-text.false-text) 是一个 zsh 主义。
  • 会有一种通用的方式适用于两种环境吗?

标签: bash zsh prompt zshrc


【解决方案1】:

zsh 中,与bash 不同,嵌入在提示中的参数扩展仅在设置了PROMPT_SUBST 选项时才会在显示提示时展开。

%(...)zsh 特定的转义序列,PROMPT 本身是 zsh 特定的名称,因此这在 bash 中不起作用,这需要类似

PS1+='$(if test $? -ne 0; then tput bel; fi)'

(顺便提一下,假设PROMPT_SUBST 已启用,它也可以在zsh 中工作。如果当前shell 实际上是zsh,则有条件启用它的命令可能是

if [ -z "$ZSH_VERSION" ]; then
  setopt PROMPT_SUBST
fi

【讨论】:

  • 仅供参考,操作数 -neq 应该重写 -ne
猜你喜欢
  • 2012-11-27
  • 2020-04-24
  • 2020-03-16
  • 1970-01-01
  • 1970-01-01
  • 2019-11-11
  • 2013-12-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多