如何在zsh中禁用"..."路径扩展功能?
解决zsh中
...被扩展为../..与Bazel冲突的问题 zsh默认开启EXTENDED_GLOB选项,该特性会将连续的点(如...)自动扩展为对应层级的上级目录路径(比如...变成../..),这和Bazel命令中...的语义完全冲突。
以下是两种解决方法:
方案1:彻底关闭EXTENDED_GLOB(简单但限制高级功能)
在~/.zshrc文件中添加:
unsetopt EXTENDED_GLOB
保存后执行source ~/.zshrc使设置生效。
注意:此操作会关闭zsh的所有高级匹配功能(如
*.txt~exclude.txt排除指定文件、*(.)仅匹配普通文件等),若日常依赖这些功能,不建议使用。
方案2:仅禁用...的扩展(保留其他高级功能)
通过全局别名让...被当作字面量处理,在~/.zshrc中添加:
alias -g ...='...'
保存后执行source ~/.zshrc生效。此时输入bazel run ...,zsh会直接传递字面的...给Bazel,不会进行路径扩展,同时其他zsh高级glob功能不受影响。
临时测试的话,可直接在当前shell中执行alias -g ...='...',然后输入echo ...验证,正常会输出...而非../..。
内容的提问来源于stack exchange,提问作者dkrot
相关产品推荐
相关产品推荐

