Bash

變數如何使用“~”進行 cd’ing?

  • November 8, 2015

如何使用變數 -$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"並正常工作,因為參數替換是用雙引號解釋的,這與波浪號擴展不同。

引用自:https://unix.stackexchange.com/questions/169492