디렉터리 이름에 공백이 포함된 경우 자동 완성 시 경로는 항상 절대 경로입니다.

디렉터리 이름에 공백이 포함된 경우 자동 완성 시 경로는 항상 절대 경로입니다.

나는 다음을 수행하기 위해 bash 5.0.17을 사용하고 있습니다.

$ cd /tmp
$ mkdir 'A B'
$ touch 'A B/C.txt'
$ ls A\ B/C<TAB>

ls A\ B/C.txt마지막 항목을 (상대) 로 자동 완성하고 싶었지만 ls /tmp/A\ B/C.txt대신 (절대)로 자동 완성됩니다. 상대 경로로 자동 완성되도록 하는 방법이 있나요?

이는 공백을 포함하여 디렉터리 이름을 하드코딩하는 타사 소프트웨어를 사용하기 위한 것이므로 단순히 디렉터리 이름에 공백을 사용할 수 없습니다.

답변1

이 동작은 활성화에서 비롯된 것 같습니다 direxpand. bashrc에 다음이 있을 수 있습니다.

shopt -s direxpand

해당 줄을 삭제하거나 로 변경해야 합니다 shopt -u direxpand. 불행하게도 이는 direxpand의 다른 이점을 잃게 됨을 의미합니다(저는 탭 완성을 통해 탈출하는 것을 좋아하지 않기 때문에 개인적으로 활성화합니다 $).

관련 정보