执行virsh命令按Tab补全文件名时出现bash语法错误如何解决
问题原因
你重写了系统原生的tput命令,和你使用的ble.sh工具的调用逻辑冲突,是.bashrc配置错误导致的报错。
你在.bashrc中自定义的tput函数会给所有输出的终端控制符外层套上\[和\],这两个是Bash的PS1提示符专用的非打印字符标记,仅在PS1变量中能被正确解析。ble.sh处理Tab补全逻辑时会调用tput获取终端属性,拿到带额外标记的返回值后无法正常解析,后续数值计算逻辑报错就是这个原因。
另外你自定义的tput函数本身没有实际作用:你写的tprompt提示符生成函数里直接硬编码了ANSI转义序列,完全没有用到你提前定义的$bold/$red等通过自定义tput生成的变量。
解决方案
直接删除.bashrc中你自定义的tput函数即可解决报错:
# 删掉下面这部分代码 tput () { printf '\\[' command tput "$@" printf '\\]' }
如果后续确实需要为生成提示符定制带非打印字符标记的tput能力,给自定义函数换个不冲突的名字即可,不要覆盖系统原生的tput命令。
内容的提问来源于stack exchange,提问作者user13592496
相关产品推荐
相关产品推荐

