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

相关推荐
一只专注api接口开发的技术猿2 分钟前
如何处理淘宝 API 的请求限流与数据缓存策略
java·大数据·开发语言·数据库·spring
superman超哥3 分钟前
Rust 异步递归的解决方案
开发语言·后端·rust·编程语言·rust异步递归
期待のcode4 分钟前
Java虚拟机的非堆内存
java·开发语言·jvm
黎雁·泠崖5 分钟前
Java入门篇之吃透基础语法(二):变量全解析(进制+数据类型+键盘录入)
java·开发语言·intellij-idea·intellij idea
毕设源码-郭学长24 分钟前
【开题答辩全过程】以 基于python电商商城系统为例,包含答辩的问题和答案
开发语言·python
散峰而望27 分钟前
【算法竞赛】栈和 stack
开发语言·数据结构·c++·算法·leetcode·github·推荐算法
Mr -老鬼28 分钟前
Rust 的优雅和其他语言的不同之处
java·开发语言·rust
网安CILLE29 分钟前
PHP四大输出语句
linux·开发语言·python·web安全·网络安全·系统安全·php
weixin_5316518131 分钟前
Rust 的所有权机制
java·开发语言·rust
江公望35 分钟前
QT/QML qmlRegisterType()函数浅谈
开发语言·qt