최근 시스템에 Fedora Core 15를 설치했는데 이해할 수 없는 동작 변화를 경험했습니다. $HOME 변수를 사용하지 않는 한 BASH 셸에서 Tab-Complete를 사용하면 문제가 없습니다.
를 입력하면 cd $HOME/d
TAB올바른 디렉터리(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