zsh printf 引用 bug

zsh printf 引用 bug

有人知道为什么我一直以来都会被 zsh 中的这个 bug 困扰吗?它就像某种字符串格式的 bug:

~% printf "%s\n" foo

" foo)foo

基本上,任何带有双引号的内容都会以类似的方式解释:

~% perl -e 'printf("%s\n", "foobar")'

", "foobar")')foobar

Zsh 配置并不复杂,只是一些基本的东西,例如:

setopt appendhistory histignorealldups autocd autopushd
bindkey -e
zstyle :compinstall filename '/home/zike/.zshrc'
autoload -Uz compinit
compinit

有什么提示为什么会发生这种情况吗?谢谢。

答案1

这对我有用:

> printf "%s\n" foo
foo

您在哪个系统上使用哪个版本的 zsh?我在 Linux 上使用 zsh 4.3.10。

答案2

好的。谢谢回复,我终于放松下来并再次检查了配置文件。这种有趣的行为是由“preexec”钩子引起的:

preexec () { print -Pn "\e]0;%m - %~ ($1)\a" }

$1扩展到用户输入,并且 zsh 对格式说明符感到困惑(%s即)。我还没有找到正确清理字符串的方法,但tr -d % 可以完成工作。转义%没有帮助。

相关内容