내 파일에서는 .bash_profile
일부 공통 디렉터리에 대한 액세스를 단순화하기 위해 짧은 변수를 설정했습니다. 예를 들어:
lh=/var/log/httpd
hc=/etc/httpd/conf
그래서 저는 이것을 다음과 같이 사용합니다:
$ cd $lh
$ less $lh/access_log
그러나 탭 키를 사용하여 (변수 참조가 포함된 매개변수에서) 파일 이름을 자동 완성하려는 경우 bash는 자동 완성을 수행하지만 \
변수 이름의 달러 기호 앞에 백슬래시를 삽입합니다.
예를 들어, 입력 less $lh/acc
하고 Tab 키를 누르면 다음으로 확장됩니다 less \$lh/access_log
.
물론 내가 원하는 것은 less $lh/access_log
또는 이다 less /var/log/httpd/access_log
. (이상하게 cd
도 이 경우에는 autocomplete 명령을 사용하는 것이 전혀 작동하지 않습니다.질문이미 논의됨)
shell-expand-line
대신 (기본 키: Ctrl+ Alt+ )를 사용할 수 있다는 것을 알고 있지만 E별칭도 확장하고 특수 문자(공백, ...)로 경로를 인용하지 않기 때문에 완벽과는 거리가 멀습니다.
쉘 변수가 경로에 사용되는 경우에도 bash에서 파일 이름을 탭 확장하는 방법이 있습니까?
답변1
문제는 direxpand
쉘 옵션이 설정되지 않았다는 것입니다. 다음은 문제를 해결합니다.
shopt -s direxpand