macOS终端启动提示_nomad_completionetup未知错误问题咨询
macOS终端启动
_nomad_completionetup报错修复 问题原因
这个报错是HashiCorp Nomad自带的zsh自动补全脚本的语法bug,和macOS系统、终端本身无关,也不会影响终端正常功能。
报错根源是补全脚本里的条件判断语句漏写了左侧变量:脚本用[命令做数值比较时,本该放在-gt/-eq前面的变量因为加载顺序问题是空值,最终传给[命令的判断语句只有比较符,没有待比较的内容,就会抛出unknown condition错误。
修复方案
根据自己的实际使用场景选对应操作即可:
- 手动修复脚本bug(保留Nomad补全功能)
- 如果你是用Homebrew装的Nomad,先定位补全脚本路径,执行命令:
brew list nomad | grep site-functions/_nomad- 用文本编辑器打开返回路径对应的文件,找到第4行附近的判断语句,你会看到类似
if [ -gt 0 ]的错误写法,把这行改成正确的变量判断格式:
if [ "${#functions[_nomad]}" -gt 0 ]; then- 保存文件后彻底退出终端(按Cmd+Q关闭进程,不是只关窗口),重新打开就不会再有报错。
- 快速规避(不用改脚本)
打开个人目录下的zsh配置文件~/.zshrc,在文件最顶部加入一行:
这行配置会提前加载zsh的补全框架,Nomad补全脚本执行时对应的函数已经初始化完成,不会出现空变量的情况,也就不会触发报错。autoload -Uz compinit && compinit - 不需要Nomad补全的话直接删除对应文件
如果平时根本用不到Nomad的命令补全,直接删掉出错的补全脚本即可,Homebrew安装场景下执行:
执行完重启终端,报错会直接消失,不会影响Nomad命令本身的使用。rm -f $(brew --prefix)/share/zsh/site-functions/_nomad
验证
操作完成后彻底重启终端进程,确认启动时不再输出那两行unknown condition报错即修复完成。
内容的提问来源于stack exchange,提问作者Bean Li
相关产品推荐
相关产品推荐

