Bash 및 Tab 자동 완성

Bash 및 Tab 자동 완성

최근 시스템에 Fedora Core 15를 설치했는데 이해할 수 없는 동작 변화를 경험했습니다. $HOME 변수를 사용하지 않는 한 BASH 셸에서 Tab-Complete를 사용하면 문제가 없습니다.

를 입력하면 cd $HOME/dTAB올바른 디렉터리(doc)가 자동 완성되지만 이전 디렉터리도 삽입되므로 \결과는 입니다 cd \$HOME/doc. 그러면 해당 경로가 존재하지 않기 때문에 실패합니다.

오류는 다음과 같습니다

bash: cd: $HOME/doc: 해당 파일이나 디렉터리가 없습니다.

Tab-Complete를 사용하지 않으면 $HOME이 여전히 올바른 디렉토리를 가리키기 때문에 작동합니다. 이 추가 항목은 어디서 나오며 \어떻게 없애나요?

답변1

이 명령을 실행하면 complete모든 완성 정의 목록이 표시됩니다. 그런 다음 /etc/bash_completion및 어딘가에서 문제가 있는 정의를 검색 할 수 있습니다 /etc/bash_completion.d. .bash_completion아마도 홈 디렉토리에도 일부가 있을 것입니다. 내 시스템에서는 $HOME변수가 올바르게 완료되었지만 아무 작업도 수행할 수 없습니다.

~대신 사용해 보셨나요 $HOME? 입력이 더 쉽고 예상대로 작동합니다.

답변2

옵션이 있습니다

shopt -s direxpand

Bash 4.1에서는 작동하지 않으므로(이 호환되지 않는 기능은 BASH 4.2에 추가되었습니다) 다음과 같이 사용합니다.

[[ $BASH_VERSION =~ ^4.[2-9] ]] && shopt -s direxpand

관련 정보