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` 屏蔽了相关功能,调整过来即可。

相关推荐
晨曦中的暮雨7 小时前
限流算法——固定窗口、滑动窗口、漏桶、令牌桶
java·开发语言·算法
喵了几个咪8 小时前
GoWind CMS 拆解:在 Go 里给 TipTap 搭一套 Yjs 协同后端
开发语言·后端·golang
程序员清风8 小时前
数据处理脚本工程化:日志、配置、命令行与测试
服务器·开发语言·数据库
2601_9628857210 小时前
如何用 Python 把 K 线重采样成任意周期?
开发语言·python
Wang's Blog10 小时前
Java 项目实战: 交友项目 - 圈子功能实现:总结
java·开发语言·交友
下一站春风里11 小时前
位运算完整学习笔记:按位与(&)+ 异或(^)
开发语言·c++·算法
天外飞雨道沧桑12 小时前
我在浏览器里练了一个 792 参数的大模型,它学会了补全 JavaScript
开发语言·javascript·ai·ecmascript·ai编程
hhhjhl12 小时前
Yup 跨端三方库仓颉适配全流程
java·开发语言
运维行者_12 小时前
网络监控工具怎么选?从设备监控到智能运维的能力清单
运维·服务器·开发语言·网络·人工智能·支持向量机·php
“AI国潮设计-小江”13 小时前
【AIGC实战】Python+SDXL打造“潮汕英歌舞IP”万能立牌插件,批量生成“发财元宝蛋糕”视觉营销方案(附源码)
开发语言·人工智能·python·prompt·aigc