2014-04-29 8 views
3

.bashrc 파일에 bash_completion을 활성화했습니다. 이제 터미널을 시작할 때마다, 그것은 나에게이 경고 표시 : 추가 정보를 위해새 터미널을 열 때마다 bash_completion에서 구문 오류 또는 경고가 표시되지 않습니까?

bash: [: too many arguments 
bash: [: =: unary operator expected 
bash: [: =: unary operator expected 
bash: [: too many arguments 

을,이 명령을 실행 :

$ bash .bashrc 

을 그리고 그것은 나에게이 경고 보여

/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 

라인 50의 /etc/bash_completion.d/gcc :

[ $USERLAND = GNU -o $UNAME = Cygwin ] && \ 

여기에 문제가 무엇인지 모르겠습니까? 이러한 경고가 터미널의 시작을 피하는 것을 어떻게 억제합니까?

+++ '[' = 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'

++ UNAME=Linux 
++ UNAME=Linux 
++ unset UNAME RELEASE default dirnames filenames have nospace bashdefault plusdirs 

는 편집 : 애드리안 제안하고 내가 출력에 다음을 발견

나는 bash -xv .bashrc를 실행

+0

을하기 때문에 중'$ USERLAND' 또는'bash는 -xv'와'$ UNAME'이 비어있는, 디버그 후드 아래에 무슨 일이 일어나고 있는지 확인합니다. 너 무슨 시스템있어? –

+0

@ AdrianFrühwirth, 우분투 12.04를 사용하고 있습니다. 나는 그것을 시도 할 것이다. – udiboy1209

+0

@ AdrianFrühwirth 너무 많은 논쟁이 불평하면'$ USERLAND' 또는'$ UNAME'에 두 단어 이상이 포함될 것을 제안합니다. 나는 그들이 인용되지 않은 것에 놀란다. –

답변

3

이 문제를 해결 한 후 에있는 파일이 bash-completion의 이전 버전에 속하므로 설치 한 의 버전과 호환되지 않습니다. 또는 그 반대의 경우도 마찬가지입니다.

나는 완전히 제거 bash-completion 제안 :

$ sudo apt-get purge bash-completion 

, 그 후 남은 파일이 없는지 확인 :

$ find /etc/bash_completion* 

가있는 경우 수동으로 삭제합니다.

이후 bash-completion을 다시 설치 : 이것은 아마 발생

$ sudo apt-get install bash-completion 
+0

나는'purge'를했고'bash_completion *'을 찾았습니다. 'bash_completion.d' 디렉토리는 여전히 일부 파일과 함께 존재합니다. 그러나 위의 오류를 제공하는 세 파일 중 하나도 존재하지 않습니다. 나는 나머지 파일들이 수동으로 설치되는 동안 다른 프로그램에 의해 추가 된 것이라고 생각한다. (예.'git','surfraw'). 그래서 나는 이것도 제거합니까? 그렇다면'bash-completion'을 설치할 때 다시 설치 될 것인가 – udiboy1209

+0

@udiboy 유효 시점 ... 아니요, 이걸 만지지 않으려합니다. 지금 다시 설치하십시오. –

+0

예! 오류가 해결되었습니다! 엄청 고마워! – udiboy1209