2011-05-08 49 views
24

是否有任何理由在shell腳本中使用變量$HOME而不是簡單的~(代字號)?

回答

31

波浪線擴展不會在某些情況下在字符串中間像/foo/bar:~/baz

+0

有關不起作用的另一個示例,請通過@no_allotment滾動到答案。 – H2ONaCl 2017-05-28 01:10:49

11

便攜性和$HOME均勻性的工作,等等。 Tilde是一個打字快捷鍵。

+1

因此,我理解存在代號爲$ HOME的shell或系統是正確的嗎? – mybuddymichael 2011-05-10 02:59:02

+5

@Michael是的,Solaris 10中的默認'sh'不會將代字號視爲'$ HOME',也不會展開'〜username'。 – evolvah 2012-04-02 03:44:40

6

今天我發現代字號擴展不能用雙引號("")。

在zsh的(對不起,我沒有檢查其他炮彈的行爲。),

在雙引號內(""),發生參數和命令替換

波浪線擴展是一個文件名擴展,所以它在雙引號內失敗。
$HOME參數替換並且可以在雙引號內擴展。
$HOME是一個安全的賭注。

相關問題