자동 완성은 항상 현재 디렉터리의 파일을 제안합니다.

자동 완성은 항상 현재 디렉터리의 파일을 제안합니다.

내장 _longopt완성 기능(예: mkdir)을 사용하는 명령에 대해 자동 완성을 사용할 때 쉘은 항상 원하는 제안 외에 현재 디렉토리의 내용을 제안합니다.

예를 들어, 내가 입력하면

mkdir ~/somedir

applicationsBash가 제안하는 대로 Tab을 두 번 누르세요. (현재 디렉토리에 , 등이 포함되어 있다고 가정 desktop)

applications/   desktop/     documents/
...
somedir_a/      somedir_b/

정상적인 동작을 복원하고 bash가 다른 파일/디렉토리를 제안 somedir_a하고 제안하지 않도록 만드는 방법은 무엇입니까 ?somedir_b

Bash 버전: GNU bash, version 5.0.11(1)-release (x86_64-redhat-linux-gnu)
Bash 완성:2.8

답변1

이 동작은 셸 옵션 nullglob(예: 에서 켜져 있을 수 있음) 으로 인해 발생할 수 있습니다 .bashrc.

그 이유는 _longopt함수 정의에 버그가 있어서 활성화 _longopt된 경우 이러한 동작이 발생하기 때문입니다.

해결 방법은 이 옵션을 비활성화하거나 _longopt기능을 직접 재정의하는 것입니다.

비슷한 효과가 여기에도 설명되어 있습니다.nullglob이 탭 완성에 영향을 미치는 이유는 무엇입니까?, 비록 이 옵션에 문제가 있다는 것을 알지 않는 한 해당 질문을 찾기가 매우 어렵습니다.

편집 : 지적한대로@fra-san, 이것은알려진 문제와 함께 bash-completion. 수정 사항은 버전에 도착했지만 2.9해당 버전은 아직 Fedora(및 아마도 다른 시스템)에 제공되지 않았습니다.

관련 정보