다음 위치에 변수가 설정되어 있습니다 .bashrc
.
export SOME_DIR=/path/to/some/dir
이제 ls
입력을 하면 ls $SOME_DIR[tab]
변수가 확장되고 파일 시스템을 파고들 때 탭 자동 완성을 사용할 수 있습니다. 그러나 시도하면 cd $SOME_DIR[tab]
아무 cd $SOME_DIR/[tab]
일도 일어나지 않습니다.
왜 이것이 에만 적용됩니까 ls
? 와 함께 작동시키는 것이 가능합니까 cd
? 에
추가하려고 시도했지만 효과가 없습니다.shopt -s direxpand
.bashrc
답변1
분명히 shopt -s direxpand
그것은 내장을 제외하고 작동합니다 cd
. 그래서 방금 내 프로필에 추가했고 TAB을 사용하는 것과 같은 방식 alias xy=cd
으로 작동합니다 xy
. (누가 이렇게 간단할 줄 알았겠어요?)cd
direxpand
답변2
Cygwin에서는 쉘 변수를 따옴표로 묶어야 하는 동일한 문제가 있었습니다. 예를 들어 cd $ccc
확장되지는 않지만 cd "$ccc"
확장되고 커서는 여전히 올바른 인용 앞에 있습니다.
답변3
디렉토리가 없을 수도 있나요 /path/to/some/dir/
? 방금 cd $SOME_DIR/[tab]
시스템을 시험해 보았는데 작동합니다.
답변4
(이전) bash 4.2.37에서는 거의 동일한 문제가 있었지만 bash 4.3 또는 4.4에서는 그렇지 않았습니다.
즉, 확장 프로그램은 작동 ls
하지만 에서는 작동하지 않습니다 cd
.
그러나 보조 키 바인딩으로 다음을 정의했습니다(e에서에스팬):
Ctrl- s내
~/.inputrc
:
Control-s: shell-expand-line
이렇게 하면 다음을 입력할 수 있습니다. cd $SOME_DIR
그런 다음 변수를 다음으로 확장합니다 Ctrl.s
cd /path/to/some/dir
똑같이 유용한 키 바인딩은 다음과 같습니다.G드롭 볼):
Ctrl- g내 것도
~/.inputrc
:
Control-g: glob-expand-word
이를 통해 입력한 ls b*
다음 확장할 Ctrl수 있습니다 .gb*
$ ls b*<kbd>Ctrl</kbd>-<kbd>s</kbd>
$ ls bash.html_node.tar.gz bash.pdf
또한 이를 통해 명령줄을 편집하고 필요에 따라 요소를 추가하거나 제거할 수 있습니다.