cd'ing에 변수가“~”를 어떻게 사용할 수 있습니까?


13

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

$ 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 

답변:


25

에서 cd ~/z/사용하는 당신 물결표 확장을 확장 ~홈 디렉토리에. 에서은 BASE="~/z"당신이 인용 있기 때문에, 당신은하지 않습니다 ~가 확장되지 않도록, 문자. 존재하지 않는 ~디렉토리 에 대해 불평하는 메시지가 표시되는 이유 입니다. 해결책은 인용을하지 않는 것입니다. 즉 BASE=~/z확장이 일어나도록하기위한 것입니다.


11

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

그러나 경로를 인용하려는 경우 (예 : 여러 공백이나 특수 기호가 포함 된 경우)가있을 ​​수 있습니다. 이 경우 사용한다 $HOME대신에 ~, 즉이 BASE="~/z"될 것 BASE="$HOME/z"매개 변수 치환이 물결표 확장과는 달리, 큰 따옴표로 해석되기 때문에, 제대로 작동합니다.


5
그것은 그것을하는 한 가지 방법이지만 필요하지는 않습니다. BASE=~/"quoted name"이 너무 오래 같이 잘 작동 ~인용 부호로 둘러싸이지 않은 남아 있습니다.
hvd

4
@ hvd : 실제로 슬래시를 인용 부호로 남겨 두어야합니다. BASE=~/"quoted name"작동하지만 BASE=~"/quoted name"그렇지 않습니다.
Gordon Davisson

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