变量如何使用“〜”进行CD?


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 

Answers:


25

cd ~/z/您正在使用的Tilde扩展扩展~到您的主目录。在中BASE="~/z",您不是因为您引用了该~字符,所以它不会扩展。这就是为什么您收到一条抱怨~目录不存在的消息的原因。解决方案是不引用它,即BASE=~/z为了让扩展发生。


11

@ jw013提供了有效的解释和解决方案。

但是在某些情况下,您确实希望引用路径,例如,当路径包含多个空格或特殊符号时。在这种情况下,您应该使用$HOME而不是~,即您BASE="~/z"将变得BASE="$HOME/z"可以正常工作,因为参数替换是用双引号解释的,这与波浪号扩展不同。


5
这是执行此操作的一种方法,但这不是必需的。BASE=~/"quoted name"只要不加~引号,就可以正常工作。
2014年

4
@hvd:实际上,您也必须不加斜杠。BASE=~/"quoted name"有效,但BASE=~"/quoted name"无效。
戈登·戴维森

你是对的。接得好。
2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.