首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每次打开新终端时都会抑制bash_completion中的语法错误或警告?

每次打开新终端时都会抑制bash_completion中的语法错误或警告?
EN

Stack Overflow用户
提问于 2014-04-29 11:50:47
回答 1查看 1.3K关注 0票数 4

我在我的bash_completion文件中启用了.bashrc。现在,每当我启动一个终端时,它都会向我显示这样的警告:

代码语言:javascript
复制
bash: [: too many arguments
bash: [: =: unary operator expected
bash: [: =: unary operator expected
bash: [: too many arguments

有关更多信息,我运行了以下命令:

代码语言:javascript
复制
$ bash .bashrc

它向我展示了这样的警告:

代码语言:javascript
复制
/etc/bash_completion.d/gcc: line 50: [: too many arguments
/etc/bash_completion.d/ifupdown: line 3: [: =: unary operator expected
/etc/bash_completion.d/ifupdown: line 19: [: =: unary operator expected
/etc/bash_completion.d/man: line 3: [: too many arguments

/etc/bash_completion.d/gcc第50行

代码语言:javascript
复制
[ $USERLAND = GNU -o $UNAME = Cygwin ] && \

我不知道这有什么问题?我怎样才能阻止这些警告出现在航站楼的起点。

编辑:

我按照禤浩焯的建议运行了bash -xv .bashrc,并在输出中找到了这些:

代码语言:javascript
复制
+++ '[' = GNU -o Linux = Cygwin ']'
/etc/bash_completion.d/gcc: line 50: [: too many arguments
.
.
.
+++ '[' = GNU ']'
/etc/bash_completion.d/ifupdown: line 3: [: =: unary operator expected
+++ '[' = GNU ']'
/etc/bash_completion.d/ifupdown: line 19: [: =: unary operator expected

编辑: 2

bash -x /etc/bash_completion | grep -E 'UNAME|USERLAND'输出

代码语言:javascript
复制
++ UNAME=Linux
++ UNAME=Linux
++ unset UNAME RELEASE default dirnames filenames have nospace bashdefault plusdirs
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-29 12:56:06

在对此进行故障排除后,我非常确信/etc/bash_completion.d中的文件属于较早版本的bash-completion,因此与您安装的/etc/bash_completion版本不兼容(反之亦然)。

我建议完全卸载bash-completion

代码语言:javascript
复制
$ sudo apt-get purge bash-completion

并验证之后是否没有留下任何文件:

代码语言:javascript
复制
$ find /etc/bash_completion*

如果有,请手动删除它们。

之后重新安装bash-completion

代码语言:javascript
复制
$ sudo apt-get install bash-completion
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23363889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档