我一直有一个很不寻常的问题。在我的 .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"
最终,我试图找到一种方法来使我的变量工作,而无需在每次键入变量时都在其周围加上引号。完全没有想法后,我来到这里,希望有人能够帮助我。
我用通配符解决了这个问题:
export PRO="/cygdrive/d/Program*Files/"
由于单词拆分,如果您不引用$PRO
空格会将您的路径分成多个单词。
的情况下,如果不引用变量,就无法使用变量。
从技术上讲,我无法回答您的问题,但一个好的解决方法是创建指向所需文件夹的链接,为链接创建一个变量,然后 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/
只需以这种方式将程序文件括在双引号中
/cygdrive/c/"Program Files (x86)"
它对我有用
我在 shell 脚本评估变量中的目录路径时遇到了类似的问题,而没有转义"程序文件"中的空格。我通过以管理员身份运行 Cygwin 并创建一个符号链接来解决这个问题。这里的答案都没有奏效。
ln -s "/cygdrive/c/Program Files" /cygdrive/c/ProgramFiles