2014-12-05 24 views
1

您好,我正在閱讀一本關於bash腳本的書,作者說將以下內容添加到我的.bashrc文件的末尾。 export PATH=~/bin:"$PATH"以便通過輸入名稱來從命令行執行我的文件。但我注意到,如果我把export PATH=~/bin:$PATH我可以達到同樣的結果。所以我的問題是引號與沒有引號的區別是什麼?謝謝。在bash導出語句中使用雙引號

回答

1

您必須在雙引號內包含變量PATH。所以它將處理具有空格但沒有雙引號的文件路徑,它不會處理其中包含空格的文件名。

+0

權利沒有想到,非常感謝 – 2014-12-05 03:59:43

+0

引號是沒有必要的,但它們也不會傷害任何東西。嘗試'foo =「1 2」;導出欄= $ foo'。 'bar'仍然得到'1 2'的值。 – chepner 2014-12-05 04:27:24

+0

然後將其添加爲答案。我會刪除我的。 – 2014-12-05 04:30:55

4

引號不會傷害任何東西,但它們都不是必需的。分配由shell特別處理。從手冊頁:

的變量可以通過以下形式的語句被分配到

  name=[value] 

如果值沒有給出,變量賦值爲空字符串。所有值經過波形擴展,參數和變量 擴展,命令替換,算術擴展和 報價移除(請參閱下面的擴展)。

請注意,字詞拆分和路徑名生成不在粗體列表中。這些是您試圖通過引用參數擴展來防止的兩種類型的擴展,但是在這種情況下它們不會被執行。相同的規則適用於傳遞給export內置命令的分配。