Bash가 부활을 완료합니다.

Bash가 부활을 완료합니다.

나는 이 질문으로 시작합니다.

Bash는 특정 명령에 대해 자동 완성을 비활성화합니다.

유일한 차이점은 제 경우에는 문제의 명령이 였다는 것입니다 configure. 해당 질문에 설명된 솔루션을 성공적으로 적용했습니다(즉, 로 완성을 제거해야 합니다 complete -r configure). 문제는... 한 번 완성하려고 하면 다시 살아난다는 것입니다.

$ complete -p configure 
complete -F _configure configure       # Hum... there *is* a completion

$ complete -r configure                # So let's remove it!

$ complete -p configure 
bash: complete: configure: no completion specification   # Ha! It's gone!

                                       # Let's try it now.
$ ./configure <TAB>                    # Damn! It still doesn't work!

$ complete -p configure                # It's back from the dead!!!
complete -F _configure configure

이 문제를 해결하는 방법을 아는 사람이 있나요?

편집하다:
또 다른 정보:

complete -p configure이것을 내 항목에 추가했는데 .bashrc시작 시 다음 오류가 발생하기 시작했습니다.

bash: complete: configure: no completion specification

흥미 롭군. 시작시 완료가 존재하지 않습니다 configure... 일종의 것 같습니다동적완성의 정의는 여기서 발생합니다.

답변1

예, 스크립트는 configure동적으로 로드됩니다.

실행된 모든 명령을 인쇄하는 옵션을 설정하여 이를 확인할 수 있습니다 set -x. 그리고 TAB 자동완성을 사용해 보세요.

소스에 대한 단서는 이 명령의 출력입니다.

dpkg -L bash-completion | xargs egrep '\<_configure\>' 2>/dev/null

파일을 삭제 configure하고 bash 인스턴스를 다시 시작하거나 clean 을 사용하세요 complete -r configure.

sudo rm /usr/share/bash-completion/completions/configure

관련 정보