2012-10-09 104 views
4

我出口在〜/ .bashrc變量如下(後跟源的〜/ .bashrc)爲什麼bash中的反斜槓?

export w=/home/user/workspace/ 

當我在命令行我試圖訪問的$子目錄w的下列方式

user$ vi $w/ 

在此之後,當我按下TAB鍵,一個神祕的反斜線出現

user$ vi \$w/ 

它禁止進一步製表完成。爲什麼?可能不是vi,因爲它甚至會發生ls

的Bash版本4.2.24(1)-release(i686的-PC-Linux的GNU) 運行Ubuntu 11.04

編輯 Workaround:打標籤之前,按Esc鍵+ Ctrl鍵+ E。

+0

可能是您的發行版的完成包中的一個錯誤。如果您指出了哪個Bash版本和Linux發行版本,這將有所幫助。 – tripleee

+0

適用於Ubuntu 12.04 w/bash 4.2.24和bash-completion 1:1.3-1ubuntu8。 –

+0

@tripleee增加了問題的詳細信息。 – user13107

回答

2

Bash有點聰明,但不是那麼聰明。它不能擴展你的變量,然後選項卡完成到任何目標的評估。所以這不是反斜槓「禁用」選項卡完成,這是事實上,bash找不到任何完成建議。

鑑於完成並不會幫助你,如果你確實在你的路徑中有環境變量,完成可以幫助你的唯一方法就是如果你打算輸入一個字面美元符號。我認爲bash在嘗試完成某件事時只是過分熱心。

不過,我會把它稱爲一個錯誤,因爲在你的情況下,它不僅不能完成,而且會改變你輸入的內容的含義。