我有 zsh 5.3 (通过 oh-my-zsh),如果我运行echo --message="foo!"
,我会在下一行得到未终止的引用提示:
$ echo --message="foo!"
dquote>
这不会发生在 bash 中。
当我!
从参数中删除该角色时,它工作正常:
$ echo --message="foo"
--message=foo
这里发生了什么事?
我还应该注意,如果我回答未终止的引号提示并按"
回车键,我会得到此输出,这完全删除了!
:
$ echo --message="foo!"
dquote> "
--message=foo
答案1
这就是历史扩展在起作用。
zshexpn(1)
联机帮助页对此是这样描述的:
如果 shell 遇到
!"
输入中的字符序列,则历史记录机制会暂时禁用,直到zshmisc(1)
完全解析当前列表(请参阅 参考资料)。将从!"
输入中删除,任何后续!
字符都没有特殊意义。