= 문자 이후에는 Bash 탭 완성이 작동하지 않습니다.

= 문자 이후에는 Bash 탭 완성이 작동하지 않습니다.

나는 많은 bash 탭 완성 질문을 살펴봤지만 아직 이 질문에 대한 답을 찾지 못했습니다.

저는 Linux 시스템(GNU bash, 버전 4.2.46(2)-릴리스(x86_64-redhat-linux-gnu))을 사용하고 있으며 탭 완성은 일반적으로 잘 작동합니다.

그러나 환경 변수나 명령줄 옵션에 탭 완성 기능을 사용하면 실패합니다. 예를 들어,

ls /v<TAB>-> ls /var/
export FOO=/v<TAB>-> export FOO=/v(벨 소리)

Mac(GNU bash, 버전 5.0.16(1)-릴리스(x86_64-apple-darwin18.7.0))에서 이 작업을 수행하면 환경 변수 값에 대한 탭 완성이 제대로 작동합니다.

두 컴퓨터 모두 $COMP_WORDBREAKS에서 "'><=;|&(:.

누군가(이게 어디서 왔는지는 모르겠습니다)가 제안했습니다.

shopt -u progcomp

도움이 될 수 있으며 문제가 해결됩니다! 그러나 Mac 측에서는 해당 옵션을 선택 취소할 필요가 없으며 다른 이상한 부작용이 발생할 수 있다는 우려가 있습니다.

설정이 취소되는게 정상인가요? 이 문제를 해결하기 위해 제가 할 수 있는 다른 방법이 있나요?

답변1

shopt -u progcomp장애를 입히다프로그래밍 가능한 완성즉, 예를 들어 각 프로그램 완료에 대한 스크립트를 제공하는 것이 가능합니다. 일치하는 파일만 완성하거나 *.tar명령줄이 다음으로 시작하는 tar등 의 기능을 제공할 수 있습니다 . 이러한 스크립트는 일반적으로 배포판과 함께 제공되지만 Mac의 경우 그렇지 않을 수도 있습니다.

progcomp또한 이러한 스크립트로 인해 발생하는 버그와 버그가 있는 기능이 실제로 유용하기보다는 더 짜증나는 경우(저에게는 약 100%) 비활성화해도 괜찮습니다.

관련 정보