cd(1)和带空格的变量(cygwin)

时间:2012-11-24 20:37:10

标签: bash cygwin environment-variables spaces cd

我遇到了一个非常不寻常的问题。在我的.bashrc文件中,我已将变量设置为包含空格的路径名。我有一种感觉,这会导致问题,但我玩的是以类似的方式设置别名并让它像这样工作:

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"

最终,我试图找到一种方法来使我的变量工作,而不是每次键入变量时都不会在它周围放置引号。完全没有想法我来到这里希望有人能够帮助我。

6 个答案:

答案 0 :(得分:4)

我用通配符解决了这个问题:

export PRO =“/ cygdrive / d / Program * Files /”

答案 1 :(得分:2)

如果您没有引用$PRO空白区域将您的路径分成多个单词,则由于单词拆分。

答案 2 :(得分:1)

在你的情况下没有引用变量就无法使用变量。

答案 3 :(得分: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 :(得分:0)

用这种方式用双引号括起程序文件

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

它对我有用

答案 5 :(得分:0)

我遇到了类似的问题,shell脚本评估变量中的目录路径而不转义“Program Files”中的空间。我通过以管理员身份运行Cygwin并创建符号链接来解决这个问题。这里的答案都没有。

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