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



我一直有一个很不寻常的问题。在我的 .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

相关内容

  • 没有找到相关文章

最新更新