bash-completion
내 것이 손상된 것 같습니다 . 명령 대체를 사용하려고 할 때마다(예: 다음을 입력할 때)
ls $(ls Deskto<Tab>
..나오다..
ls $(ls Desktobash unexpected eof while looking for matching ")".
.bashrc
내 파일을 삭제하고 cp /etc/skel/bashrc ~/
새 파일을 얻으려고 했습니다 . 새로운 bashrc에 뭔가를 추가하기 전까지는 작동하지 않았습니다. 해도 echo '#" >> ./.bashrc
또 깨집니다. 광산을 삭제해도 bash_aliases
도움이되지 않았습니다.
sudo apt-get install --reinstall bash-completion
그것도 안 했어 . 그러나 유사한 문제에 대한 일부 스레드가 있지만 소용이 없습니다.
어떤 조언이라도 대단히 감사하겠습니다! :)
답변1
당신의 것은 bash-completion
실제로 "깨진" 것이 아닙니다. 단지알려진 버그bash-completion 2.1 및 Bash 4.3과 함께 사용됩니다.
나는 최근에 대답했다관련된 질문AskUbuntu에서그리고 또 여기, 하지만 제가 여기 왔으니 이 질문을 구글링하는 사람들도 여기에서 답을 찾을 수 있도록 여기에도 답변하겠습니다.
자세한 내용을 알려드렸습니다Ask우분투, 그러나 본질적으로 이 문제를 해결하려면 다음을 수행할 수 있습니다.
바꾸다
[[ ${!2} == \$* ]] && eval $2=${!2}
그리고
[[ ${!2} == \$\'* ]] && eval $2=${!2}
_quote_readline_by_ref
파일의 함수에서/usr/share/bash-completion/bash_completion
(권장되지 않음)최신 Git 버전 보기배쉬 완성 라이브러리그리고 그것을 사용하세요. 이 버전에서는 버그가 수정된 것 같습니다.
이러한 솔루션 중 하나를 사용하면 명령 대체에서 탭 완성을 다시 사용하지 않지만 적어도 해당 오류 메시지는 다시 표시되지 않습니다.
실제로 명령 대체에서 탭 완성을 구현하려면 이전 버전의 Bash로 되돌려야 합니다(효과가 있다고 들었어) 또는 라이브러리가 실제로 Bash 4.3의 문제를 해결할 때까지 기다리십시오.
답변2
이 문제를 일으킬 수 있는 한 가지는 키워드에 별칭을 지정하는 것입니다 . , 등 local
의 별칭 키워드를 사용하지 마세요 .local
do
done
답변3
/etc/bash_completion
먼저 그것이 어떻게 생겼는지 살펴 보겠습니다 .
. /usr/share/bash-completion/bash_completion
(줄의 시작 부분을 놓치지 마세요 .
) 그래도 도움이 되지 않으면 bash 파일에서 모든 링크를 찾으려고 노력하겠습니다.
find / -name *bash* -type f -exec grep -l completion {} \+ 2>/dev/null
그리고 오류가 있는지 확인하세요. 일부 파일에는 다음 코드가 있어야 합니다.
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi