bash tab 补全报错 bash: syntax error near unexpected token `(‘

使用 vim 编辑文件时,敲下 vim xxx 后,再键入 tab 键报进行补全报错 bash: syntax error near unexpected token `('.

打开 bash 的命令执行详情

bash 复制代码
set -v

定位到具体的代码:

显然,代码位于 bash 补全的逻辑当中。

定位代码具体的文件和行号位置:

单独执行报错的代码

bash 复制代码
xspec=*.@([ao]|so|so.!(conf|*/*)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)

报错 bash: !: event not found ,等等,原来是

bash 复制代码
!(conf|*/*)

这一部分被解析成了历史展开的事件指示器,可是明明是个 extglob 的结构。

查看 extglob 是否开启:

bash 复制代码
shopt -p | grep extglob

发现未开启,那么开启 extglob

bash 复制代码
shopt -s extglob

再次执行 vim xxx 然后 tab 补全,一切正常。

继续排查根源是 .bashrc 当中执行的某个初始化脚本当中,执行 `shopt -u extglob` 屏蔽了相关功能,调整过来即可。

相关推荐
qq_336313931 分钟前
java基础-集合进阶
java·开发语言·windows
222you3 分钟前
MybatisPlus常用注解
java·开发语言·spring
你的冰西瓜13 分钟前
C++20 新特性详解:相较于 C++17 的主要改进
开发语言·c++·stl·c++20
济宁雪人24 分钟前
Java安全基础——JNI安全基础
java·开发语言
lsx20240638 分钟前
Django 视图详解
开发语言
h***06651 小时前
【JSqlParser】Java使用JSqlParser解析SQL语句总结
java·开发语言·sql
代码or搬砖1 小时前
Java Lambda 表达式全面详解
java·开发语言·python
这周也會开心1 小时前
JDK1.8新增语法
java·开发语言
心随雨下1 小时前
TypeScript泛型开发常见错误解析
java·开发语言·typescript
郝学胜-神的一滴2 小时前
现代OpenGL窗口管理:GLFW从入门到实战
开发语言·c++·程序人生·图形渲染·个人开发