나는 한동안 프로그램을 종료하기 위해 Kill $(pidof )를 사용해 왔으며 어젯밤부터 탭 완성을 사용하려고 할 때마다 $()
오류가 발생했습니다.
bash: unexpected EOF while looking for matching `)'
bash: syntax error: unexpected end of file
탭 완성은 명령 대체 외부에서도 잘 작동합니다.
내 질문은 Ubuntu 시스템에서 탭 완성을 위한 구성 파일이 어디에 있습니까? 누군가 이 특정 문제를 겪었거나 내가 할 수 없는 것이 무엇인지 명확하게 알 수 있는 경우 이 문제를 해결하는 방법 및/또는 이런 일이 발생하는 이유는 무엇입니까? (항상 이유가 궁금했습니다.) 그렇지 않은 경우 이 문제 조사를 어디서 어떻게 시작해야 하는지 알려주시면 감사하겠습니다.
고쳐 쓰다
탭 완성 시 $(pidof
더 이상 오류가 발생하지 않지만 이제는 전혀 작동하지 않습니다. 나는 이전에 bash 내부를 실제로 망쳐본 적이 없지만 손이 더러워지는 것을 두려워하지 않습니다. 어떤 지침이라도 대단히 감사하겠습니다.
답변1
내 질문은 Ubuntu 시스템에서 탭 완성을 위한 구성 파일이 어디에 있습니까?
우분투에서는 bash-completion 라이브러리가 /usr/share/bash-completion/bash_completion
.
이 라이브러리는 셸을 시작할 때 여러 가지 방법으로 얻을 수 있습니다. 예를 들어,
~/.bashrc
->/etc/bash_completion
->/usr/share/bash-completion/bash_completion
/etc/profile
->/etc/profile.d/bash_completion.sh
->/usr/share/bash-completion/bash_completion
누군가 이 특정 문제를 겪었거나 내가 할 수 없는 것이 무엇인지 명확하게 알 수 있는 경우 이 문제를 해결하는 방법 및/또는 이런 일이 발생하는 이유는 무엇입니까? (왜인지 항상 궁금합니다.)
나는 최근에 대답했다관련된 질문AskUbuntu에서 (그리고 그 과정에서 질문을 찾았습니다) 거기에서 자세한 내용을 찾아보세요.이것은 알려진 버그입니다..
이 문제를 해결하려면 다음을 수행하세요.
바꾸다
[[ ${!2} == \$* ]] && eval $2=${!2}
그리고
[[ ${!2} == \$\'* ]] && eval $2=${!2}
_quote_readline_by_ref
파일의 함수에서/usr/share/bash-completion/bash_completion
(권장되지 않음)최신 Git 버전 보기배쉬 완성 라이브러리그리고 그것을 사용하세요. 이 버전에서는 버그가 수정된 것 같습니다.
이러한 솔루션 중 하나를 사용하면 명령 대체에서 탭 완성을 다시 사용하지 않지만 적어도 해당 오류 메시지는 다시 표시되지 않습니다.
실제로 명령 대체에서 탭 완성을 구현하려면 이전 버전의 Bash로 되돌려야 합니다(효과가 있다고 들었어) 또는 라이브러리가 실제로 Bash 4.3의 문제를 해결할 때까지 기다리십시오.