Bash에서 경로 완성이 항상 작동하지 않는 이유는 무엇입니까?

Bash에서 경로 완성이 항상 작동하지 않는 이유는 무엇입니까?

TAB다른 bash 환경(다른 설치)의 경우 . 이건 어디서 처리되나요?

구체적인 예:

나는 cmake다음과 같이 실행합니다 -D- 매개변수:

cmake -DCMAKE_TOOLCHAIN_FILE=~/x-too<TAB>

아무것도 하지 않습니다. 그리고 ( =사이의 공백 에 유의하십시오.~

cmake -DCMAKE_TOOLCHAIN_FILE= ~/x-too<TAB> 

완료

cmake -DCMAKE_TOOLCHAIN_FILE= ~/x-tools

다른 시스템에서는 =와 ~ 사이에 공백 없이도 작동합니다.

관련 구성 파일과 값은 어디에서 찾을 수 있나요?

답변1

Linux 자동 완성은 complete.

 ]➬complete -p  cmake
 complete -F _cmake cmake

그래서 _cmake가 책임을 집니다.

]➬type _cmake > cmake.sh

이제 보기/디버깅하기만 하면 됩니다. 예를 들어 _cmake_mine을 수정하고 다음을 호출하여 테스트할 수 있습니다.

. cmake.sh
complete -F _cmake_mine cmake

도움을 요청모든 내장배시 명령:

 help complete
 help [[
 help for

답변2

처음부터 시작해야 합니다 /etc/profile. 이 소스에서 다른 파일을 봅니다( .아마도 명령을 사용하여).

예를 들어 내 Ubuntu 시스템에서는

  • /etc/profile모든 *.sh 파일 소스/etc/profile.d/
  • /etc/profile.d/bash_completion.sh원천/usr/share/bash-completion/bash_completion
  • 문서:
    • 찾을 완료 로더 기능을 설정하십시오./usr/share/bash-completion/completions/
    • 및 소스~/.bash_completion

다양한 시스템에서 이 경로를 따라야 합니다. 어쩌면 cmake/usr/share/bash-completion/completions/에 그 중 하나에 대한 파일이 없을 수도 있습니다.

관련 정보