变量如何使用“~”进行cd'ing?

变量如何使用“~”进行cd'ing?

我如何$BASE在我的 cd.txt 中使用变量 -我尝试了以下操作,但出现错误

$ 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"并且可以正常工作,因为参数替换是用双引号解释的,这与波形符扩展不同。

相关内容