2016-03-14 26 views
0

在我的.bash_profile我有這樣一行:

export dl="~/Desktop/Diffs/today.diff" 

我使用這個文件作爲一次性現在,然後打開快速的diff經過一天崇高了,我累了寫出的路徑,所以我嘗試使其成爲一個變量。但它不起作用。

如果我寫git diff HEAD~ > ~/Desktop/diffs/today.diff,一切都很好。但是,如果我嘗試使用git diff HEAD~ > $dl相反,它告訴我:

-bash:〜/桌面/的diff/today.diff:沒有這樣的文件或目錄

爲什麼?

+0

的問題是,'〜'擴張發生在錯誤的時間(見[shell擴展(https://www.gnu.org/software /bash/manual/bash.html#Shell-Expansions)並注意'〜'擴展發生在變量擴展之前,而不是之後)。使用'export dl =「$ HOME/Desktop/Diffs/today.diffs」'。 –

+0

僅供參考,[shellcheck](http://www.shellcheck.net)捕獲常見的shell腳本錯誤[包括這一個](https://github.com/koalaman/shellcheck/wiki/SC2088)。 –

回答

3

~ -expansion不會在引號內發生。您可以修復,通過把引號外~/

export dl=~/"Desktop/..." 

其中工程即使路徑包含空格。在Unix的&的Linux上這種過度

地段的詳細信息:Why doesn't the tilde (~) expand inside double quotes?

+0

您也可以使用「$ HOME」代替。 –

+0

是的,但是如果想要的路徑是'〜someotheruser/Public/...',那麼就會失敗'' – Mat

+0

我試過'export dl =〜「/Desktop/Diffs/today.diff」'但我實際上得到了同樣的錯誤。這很奇怪,因爲我根本不相信你會認爲這應該起作用。 – Aerovistae