在Cygwin中设置具有空格的路径

时间:2013-01-15 04:00:18

标签: node.js cygwin whitespace

我设置了2个环境变量来测试哪个适用于我,如下所示

的.bash_profile

NODE_BIN1="/cygdrive/c/Program Files/nodejs"
NODE_BIN2=/cygdrive/c/Program\ Files/nodejs
export NODE_BIN1 NODE_BIN2

然后在Cygwin终端中测试它们

$ cd $NODE_BIN1
kevin@kevin-HP /cygdrive/c/Program  (wrong!)

$ cd $NODE_BIN2
kevin@kevin-HP /cygdrive/c/Program  (wrong!)

$ cd C:/Program Files/nodejs
kevin@kevin-HP /cygdrive/c/Program  (wrong!)

$ cd "C:/Program Files/nodejs"
kevin@kevin-HP /cygdrive/c/Program Files/nodejs 

最后的结果是我想要的,但实际上它与$ NODE_BIN1的字符串相同。

有什么想法解决这个问题吗? 非常感谢!

2 个答案:

答案 0 :(得分:1)

尝试使用cygpath?

export NODE_BIN1=`cygpath -w -s "/cygdrive/c/Program Files/nodejs"`

这也提供相同的输出

export NODE_BIN1=`cygpath -d "/cygdrive/c/Program Files/nodejs"`

答案 1 :(得分:0)

这两种方法都会正确设置环境变量。您遇到的问题是当您尝试使用它时; bash默认情况下会在空格上拆分变量,最后您会使用两个参数调用cd/cygdrive/c/ProgramFiles/nodejs

解决方案当然是切换到zsh。 ;)

好的,好的。如果您的目的是能够轻松切换到此目录,请考虑编写别名。

alias cdnode='cd "/cygdrive/c/Program\ Files/nodejs"'

如果您只想将此设置为节点的好处,那么请不要担心;你已经很好了。您可以绝对确定使用echo

$ echo "[$NODE_BIN1]"
[/cygdrive/c/Program\ Files/nodejs]