"~"를 사용하여 변수를 cd'ing하는 방법은 무엇입니까?

"~"를 사용하여 변수를 cd'ing하는 방법은 무엇입니까?

내 cd.txt에서 변수를 어떻게 $BASE사용할 수 있습니까? 다음을 시도했지만 오류가 발생했습니다.

$ cd ~/z/repo_1_ruby_193/
23:23:57 durrantm Castle2012 /home/durrantm/z/repo_1_ruby_193 

$ BASE="~/z"
23:24:03 durrantm Castle2012 /home/durrantm/z/repo_1_ruby_193 

$ cd $BASE/repo_1_ruby_193
-bash: cd: ~/z/repo_1_ruby_193: No such file or directory
23:24:25 durrantm Castle2012 /home/durrantm/z/repo_1_ruby_193 

답변1

cd ~/z/사용하기 전에물결표 확장~홈 디렉터리로 확장합니다 . 에서는 문자 BASE="~/z"를 인용했기 때문에 ~확장되지 않았습니다. 이것이 ~디렉토리가 존재하지 않는다는 메시지를 받는 이유입니다 . 해결책은 이를 참조하지 않는 것입니다. 즉, BASE=~/z확장이 발생하도록 하기 위한 것입니다.

답변2

@jw013 님이 유효한 설명과 해결책을 제시했습니다.

그러나 경로에 공백이나 특수 기호가 여러 개 포함되어 있는 경우와 같이 경로를 인용하고 싶은 경우가 있을 수 있습니다. 이 경우 $HOME대신 을 사용해야 합니다 ~. 즉, 물결표 확장과 달리 매개변수 대체가 큰따옴표로 해석되므로 BASE="~/z"BASE="$HOME/z"되어 제대로 작동합니다.

관련 정보