本文主要是介绍bash tab 补全报错 bash: syntax error near unexpected token `(‘,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
使用 vim 编辑文件时,敲下 vim xxx 后,再键入 tab 键报进行补全报错 bash: syntax error near unexpected token `('.
打开 bash 的命令执行详情
set -v
定位到具体的代码:
显然,代码位于 bash 补全的逻辑当中。
定位代码具体的文件和行号位置:
单独执行报错的代码
xspec=*.@([ao]|so|so.!(conf|*/*)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)
报错 bash: !: event not found ,等等,原来是
!(conf|*/*)
这一部分被解析成了历史展开的事件指示器,可是明明是个 extglob 的结构。
查看 extglob 是否开启:
shopt -p | grep extglob
发现未开启,那么开启 extglob
shopt -s extglob
再次执行 vim xxx 然后 tab 补全,一切正常。
继续排查根源是 .bashrc 当中执行的某个初始化脚本当中,执行 `shopt -u extglob` 屏蔽了相关功能,调整过来即可。
这篇关于bash tab 补全报错 bash: syntax error near unexpected token `(‘的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!