Bash
變數如何使用“~”進行 cd’ing?
如何使用變數 -
$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
在
cd ~/z/
您使用波浪號擴展來擴展~
您的主目錄時。在BASE="~/z"
,你不是因為你引用了~
字元,所以它沒有被擴展。這就是為什麼您會收到一條消息,抱怨~
目錄不存在。解決方案是不引用它,即BASE=~/z
為了讓擴展發生。
@jw013 給出了有效的解釋和解決方案。
但在某些情況下,您確實想要引用路徑,例如當它們包含多個空格或特殊符號時。在這種情況下,您應該使用
$HOME
而不是~
,即您BASE="~/z"
將成為BASE="$HOME/z"
並正常工作,因為參數替換是用雙引號解釋的,這與波浪號擴展不同。