为什么使用后set histchars='?'
每次source都会出错~/.zshrc
?
/home/user/.zshrc:1: bad pattern: #
换句话说,#
评论中的每个标记都会引起一些问题。
答案1
您显示的命令应该会给出以下错误消息:
setopt: no such option: histchars=?
应该没有其他影响。
但是,如果将该变量设置histchars
为单个字符?
,则您将禁用 shell 中的注释。这是因为zsh
shell 使用第三histchars
作为注释指示符的变量的字符。
该变量在手册中的记录如下zshparam(1)
:
shell 的历史和词法分析机制使用的三个字符。第一个字符表示历史扩展的开始(默认
!
)。第二个字符表示快速历史替换的开始(默认^
)。第三个字符是注释字符(默认#
)。字符必须是ASCII字符集中的;任何设置
histchars
为具有与区域设置相关的含义的字符的尝试都将被拒绝,并显示错误消息。
对于通常允许命令的每个注释字符(例如在行的开头),设置histshars=?
会引发错误。如果您在 shell 中command not found
设置了shell 选项,则会生成错误。EXTENDED_GLOB
bad pattern
如果要将histchars
历史扩展指示符 的首字母更改为问号,请使用
histchars[1]=?