2010-10-12 88 views
9

試圖在我的.bashrc文件中設置一些別名。這一個...如何在bash別名中跳過空格?

export alias umusic="/Volumes/180 gram/Uncompressed/" 

...得到以下錯誤...

-bash:CD:/卷/ 180:沒有這樣的文件或目錄

。 ..當我嘗試「CD $ umusic」。

我試過在目錄名稱中轉義空白的各種方法,都無濟於事。 (180 \克,180%20克,單引號,雙引號,沒有引號)。我意識到最簡單的解決方案是將目錄重命名爲「180克」,但我想知道如何解決這個特定的問題。

我在Mac上,如果這有什麼區別。

回答

14

您使用export命令正在umusic環境變量而不是別名export命令導出在命令行其餘部分命名的環境變量,可選地使用新值。因此,它導出名爲alias(可能未設置)的環境變量和一個名爲umusic的環境變量。

鑑於正在擴展的環境變量,shell執行以下操作替代:

cd $umusic 
cd /Volumes/180 gram/Uncompressed/ 

產生你,因爲空間沒有引述錯誤。相反,如果你這樣做:

cd "$umusic" 

則擴展爲

cd "/Volumes/180 gram/Uncompressed/" 

這是你期待什麼。

但是,爲此使用環境變量可能還有點太多工作,因爲您必須引用擴展。相反,試試這個別名:

alias umusic="cd '/Volumes/180 gram/Uncompressed'" 

,你會只用

$ umusic 
$ pwd 
/Volumes/180 gram/Uncompressed 
+0

謝謝運行,一個相關的問題:我想別名理應作爲縮寫文件路徑。在別名中包含一個命令可以嗎? – parisminton 2010-10-12 05:00:44

+2

shell別名是一個縮寫命令;它們與文件路徑沒有特別的聯繫(除非它們可以包含路徑,正如Greg的建議所做的那樣)。 – 2010-10-12 06:10:27

+0

請注意,別名技術'alias umusic =「cd'/ Volumes/180 gram/Uncompressed'」'不允許代字號被解釋爲主頁。而不是代字號('〜/'),你必須使用'/ home/yourUsername /',這種技術效果很好。 – cameronroytaylor 2016-09-14 19:51:56