탭 완성 중에 bash가 $ 탈출을 멈추게하는 방법은 무엇입니까?


38

나는 커맨드 라인에 이것을 가지고있다 :

ln -sf $PWD/wine-

그런 다음 Tab파일 이름을 완성하기 위해 누르십시오 . 이전 버전의 우분투에서는 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

2
이 버그의 영향을받는 경우 다음 URL에서 투표를 고려하십시오 (로그인 필요). bugs.launchpad.net/ubuntu/+source/bash/+bug/778627/…
cripton

답변:


36

bash 버전> = 4.2.29 에 새로운 direxpandshopt 설정 이 있음을 발견했습니다 . ( man docs/bash.1새 bash를 체크 아웃하거나 8951 행에서 bash.1 참조 )

Quantal Quetzal 12.10을 사용하거나 새로운 bash를 유지 (또는 체크 아웃 및 빌드)하는 경우 :

shopt -s direxpand

내가 원하고, 필요로하고, 사랑하는 행동을합니다.

해결 방법 : 그 동안 Ctrl+ Alt+ E대신 Tab내가 원하는 것을 수행합니다. 그러나 어색합니다.

BTW, "bash tab variable expansion question"이라는 스레드가 몇 개 있습니까? 에 gnu.bash.bug . 그것들을 읽음으로써 여기에서 정보를 찾았습니다.


2
direxpand가있는 bash 버전은 Precise (12.04)로 가고 있습니다
keturn

7
거대한 경로를 확장하지 않고 이스케이프 처리되지 않은 변수를 계속 사용할 수 있다면 더 좋을 것입니다.
jozxyqk

@jozxyqk 경로없는 확장 기능을 얻는 방법을 찾은 적이 있습니까?
Ungeheuer

@ Ungeheuer 나는 현재 4.4.19Ubuntu 18.04에서 bash 를 사용 하고 있으며 작동합니다. 언제 변경되었는지 확실하지 않습니다.
jozxyqk

2

_filedir()최상위 bash_completion 스크립트에서 검색 하고 행을 변경하십시오.

compopt -o filenames 2>/dev/null

compopt -o filenames -o noquote 2>/dev/null

12.04 GNU bash, 버전 4.2.25에서이 제안은 오류를 제공합니다.compopt: noquote: invalid option name
arielf

1

12.04가있는 사람들은 $ PWD 대신 ~ +를 사용할 수 있습니다 ...

예를 들면 다음과 같습니다.

cd /bin
echo ~+/ls
/bin/ls

1

업데이트 된 bash를 사용하더라도 $여전히 탈출 할 수 있습니다.

  • bash-completion (1:2.1-3.fc20)패키지 제거
  • 또는 단순히 소싱하지 /etc/bashrc에서 ~/.bashrc문제를 해결할 것 같았다.

일반적으로 익숙하지만 아직 눈치 채지 못한 일부 기능이 누락 된 것으로 보입니다.


대안 (적어도 Fedora 26의 경우)은 export BASH_COMPLETION_VERSINFO=0소싱하기 전에 추가하십시오 /etc/bashrc. 이로 인해 문제가있는 스크립트가 이미 소스 화 된 것으로 생각합니다.



0

쉘 옵션 'complete_fullquote'를 비활성화하면 작업이 수행됩니다.

shopt -u complete_fullquote

$ shopt -u complete_fullquote -bash : shopt : complete_fullquote : 유효하지 않은 쉘 옵션 이름
Anton Gorev

0
shopt -u progcomp

이것은 나를 위해 그것을 고쳤습니다. 또한 어리석은 일이 내가 특정 파일에 대한 인수로 원하지 않는다고 생각하기 때문에 내가 알고있는 파일을 완성하지 못하여 발견 된 많은 "지능형"완료 옵션을 제거했습니다. 명령. ARRRGH

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.