명령줄에 다음이 있습니다.
ln -sf $PWD/wine-
그런 다음 Tab파일 이름을 완성하기 위해 키를 쳤습니다. 이전 버전의 Ubuntu에서는 파일 이름을 완성하는 데 문제가 없었습니다 (그리고 당시에 wine-
는 부작용이 확장될 수 있었습니다). $PWD
하지만 이제 그것은 다음과 같이 변합니다.
ln -sf \$PWD/wine-
이것은 내가 의미하는 바가 전혀 아니며 파일이 문자 그대로 $
.
덜 깨진 동작을 다시 완료하려면 어떻게 해야 합니까?
set
현재 설정이 다음과 같다고 알려줍니다.
BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath
SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor
답변1
나는 그것을 발견했다배쉬 버전 >= 4.2.29새로운 direxpand
상점 설정이 있습니다. ( man docs/bash.1
새 bash를 확인하거나8951행의 bash.1)
Quantal Quetzal 12.10을 사용하거나 새로운 bash를 확보(또는 체크아웃하고 빌드)하는 경우:
shopt -s direxpand
내가 원하고 필요하고 사랑하는 행동을 나에게 제공합니다.
해결 방법: 그동안 Ctrl++ 대신 내가 원하는 작업도 수행합니다 Alt. 그런데 어색해요.ETab
그런데 "bash 탭 변수 확장 질문"이라는 스레드가 여러 개 있습니다. ~에gnu.bash.bug. 읽으면서 여기에서 정보를 찾았습니다.
답변2
shopt -u progcomp
이로 인해 문제가 해결되었으며, 내가 알고 있는 파일을 완료하지 않음으로써 방해가 되는 많은 "지능형" 완성 옵션도 제거되었습니다. 왜냐하면 어리석은 일이 내가 특정 항목에 대한 인수로 원하지 않는다고 생각하기 때문입니다. 명령. 아아아앙
답변3
_filedir()
최상위 bash_completion 스크립트에서 검색 하고 줄을 변경하십시오.
compopt -o filenames 2>/dev/null
에게
compopt -o filenames -o noquote 2>/dev/null
답변4
(나 같은) 12.04를 사용하는 사람들은 $PWD 대신 ~+를 사용할 수 있습니다...
예를 들어 :
cd /bin
echo ~+/ls
/bin/ls