3

我遇到了一个非常不寻常的问题。在我的 .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"

最终,我试图找到一种方法来使我的变量工作,而无需在每次键入变量时都在其周围加上引号。完全没有想法后,我来到这里希望有人能够帮助我。

4

6 回答 6

4

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

导出 PRO="/cygdrive/d/Program*Files/"

于 2013-07-12T08:45:06.630 回答
2

由于单词拆分,如果您不引用$PRO该空格会将您的路径分成多个单词。

于 2012-11-24T20:45:49.430 回答
1

在您的情况下,如果不引用变量,就无法使用它。

于 2012-11-24T20:42:29.257 回答
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/
于 2013-07-03T10:34:30.097 回答
0

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

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

于 2016-04-30T02:10:46.377 回答
0

只需用这种方式将程序文件用双引号括起来

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

这个对我有用

于 2016-01-20T10:10:17.023 回答