更改 zsh 中“histchars”的值后,注释导致错误

更改 zsh 中“histchars”的值后,注释导致错误

为什么使用后set histchars='?'每次source都会出错~/.zshrc

/home/user/.zshrc:1: bad pattern: #

换句话说,#评论中的每个标记都会引起一些问题。

答案1

您显示的命令应该会给出以下错误消息:

setopt: no such option: histchars=?

应该没有其他影响。

但是,如果将该变量设置histchars为单个字符?,则您将禁用 shell 中的注释。这是因为zshshell 使用第三histchars作为注释指示符的变量的字符。

该变量在手册中的记录如下zshparam(1)

shell 的历史和词法分析机制使用的三个字符。第一个字符表示历史扩展的开始(默认!)。第二个字符表示快速历史替换的开始(默认^)。第三个字符是注释字符(默认#)。

字符必须是ASCII字符集中的;任何设置histchars为具有与区域设置相关的含义的字符的尝试都将被拒绝,并显示错误消息。

对于通常允许命令的每个注释字符(例如在行的开头),设置histshars=?会引发错误。如果您在 shell 中command not found设置了shell 选项,则会生成错误。EXTENDED_GLOBbad pattern

如果要将histchars历史扩展指示符 的首字母更改为问号,请使用

histchars[1]=?

相关内容