$ bash --version
GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)
나는 일반적으로 MATE 터미널을 통해 Ubuntu 16.04 시스템에서 위의 bash 버전을 사용합니다. 그러나 현재 저는 macOS 10.14.6의 Terminal.app을 사용하여 해당 컴퓨터에 SSH로 연결하고 있습니다. 내 .bash_profile
사용자를 위한 source
것이므로 .bashrc
터미널 에뮬레이터 옆에 구성 차이가 없어야 합니다.
자주 사용되지만 긴 디렉터리 경로를 축약하는 데 사용하는 환경 변수가 있습니다. .bashrc에 다음과 같이 정의되어 있습니다.
export FOO=~/foo/bar/baz
export BAR=~/foo/bar/baz/qux/foobar
나는 이러한 변수의 하위 디렉터리에 탭 완성(이름의 일부를 입력하고 탭 키를 누르는 것을 의미함)을 사용하는 습관이 있으므로 다음을 입력할 수 있습니다.
cd $FOO/mi<TAB>
그리고 얻다:
cd $FOO/misc/
이것은 내가 익숙하고 좋아하는 MATE 터미널에서의 동작입니다. 그러나 Terminal.app을 사용하여 동일한 시스템에 SSH로 연결하면 짜증나게 변수가 확장됩니다.
cd /home/andrea/foo/bar/baz/misc/
왜 이런 일이 발생하는지 모르겠지만 Terminal.app이 다른 이스케이프 시퀀스를 보내는 것 같습니다. <ESC><TAB>
대신 Terminal.app을 입력하면 <TAB>
친숙하고 원하는 동작을 얻을 수 있습니다(환경 변수 확장 없음). 불행히도 Terminal.app의 이스케이프 시퀀스처럼 보이지 않습니다.탭용구성 가능합니다.
그래서 bash가 항상 내가 원하는 동작을 사용하도록 강제할 수 있는지 알고 싶습니다.
에 대한 답변에서bash: 탭 완성으로 변수 이름이 확장되지 않습니다.(누군가가 있는 곳에서반대나에게 문제가 있는 경우, 그들은 내가 원하는 행동을 원합니다.~하지 않다원함), 본 적이 있습니다 shopt -s direxpand
. 그래서 그 반대인 를 시도해 보았지만 shopt -u direxpand
도움이 되지 않았습니다. ~ 안에https://stackoverflow.com/questions/6418493/bash-variable-expansion-on-tab-complete나도 보았지만 shopt -s cdable_vars
마찬가지로 shopt -u cdable_vars
도움이 되지 않았습니다.
나는 헤매고 있다. :(