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