我遇到了一个非常不寻常的问题。在我的.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"
最终,我试图找到一种方法来使我的变量工作,而不是每次键入变量时都不会在它周围放置引号。完全没有想法我来到这里希望有人能够帮助我。
答案 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