2012-11-24 62 views
3

我一直有一個相當不尋常的問題。在我的.bashrc文件中,我已經將一個變量設置爲一個包含空格的路徑名。我有一種感覺,這會造成問題,但我設置以類似的方式別名發揮各地,並得到它,像這樣的工作:cd(1)和變量與空格(cygwin)

alias npp="\"/cygdrive/c/Program Files (x86)/Notepad++/notepad++.exe\"" 

現在,我想我可以用同樣的伎倆我的環境變量 -

export PRO="\"/cygdrive/c/Program Files (x86)\"" 

這工作。有點。

[myName] 
$ echo $PRO 
"/cygdrive/c/Program Files (x86)" 

[myName] 
$ cd $PRO 
bash: cd: "/cygdrive/c/Program: No such file or directory 

我試着不除去雙引號的空間之前放置一種逃避,我已經試過單引號與不逃避。我試過使用嚴重口音作爲引號。我試過只是逃跑,我試過

export PRO=/cygdrive/c/Program\\\ Files\\\ \\\(x86\\\) 

這一切都沒有奏效。有唯一的辦法就是 -

export PRO="/cygdrive/c/Program Files (x86)" 
$ cd "$PRO" 

最終,我試圖找到一種方法,讓我的變量的工作不加上引號,它周圍的每一次我鍵入變量。由於完全沒有想法,我來到這裏希望有人能夠幫助我。

+1

這就是它應該工作的方式。如果你想把空格的值當作單個單詞處理,那麼用雙引號將它括起來是一種方法。有一種觀點認爲,你應該幾乎總是用雙引號括起變量(特別是可能包含空格的變量)。 –

回答

1

沒有辦法在您的情況下使用變量而不引用它。

2

由於Word拆分,如果您不引用$PRO白色空間將您的路徑分解成多個單詞。

0

從技術上講,我無法回答你的問題,但一個很好的解決方法是創建一個鏈接到你想要的文件夾,爲鏈接創建一個變量,然後cd到該變量。這是一個惱人的第二步和毫無意義的鏈接,但如果它的價值放在你的bash配置文件中,它可能值得額外的無用。

這裏就是我所做的:

ln -sf '/cygdrive/c/Users/Mic/Desktop/PENDING - Pics/' '/cygdrive/c/Users/Mic/mypics' 

然後我把這個在我的.bash_profile,現在我能cd $ PIC

pic=/cygdrive/c/Users/Eric/mypics/ 
4

我解決此得到了與通配符:

出口PRO =「/ cygdrive/d/Program * Files /」

0

只需將程序文件用雙引號括起來是這樣

/cygdrive/c/"Program Files (x86)" 

它爲我

0

我遇到了一個shell腳本評估在一個變量的目錄路徑沒有逃脫在「程序文件」的空間類似的問題。我通過以管理員身份運行Cygwin並創建符號鏈接來解決此問題。這裏沒有答案。

ln -s "/cygdrive/c/Program Files" /cygdrive/c/ProgramFiles