我设置了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的字符串相同。
有什么想法解决这个问题吗? 非常感谢!
答案 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/Program
和Files/nodejs
。
解决方案当然是切换到zsh。 ;)
好的,好的。如果您的目的是能够轻松切换到此目录,请考虑编写别名。
alias cdnode='cd "/cygdrive/c/Program\ Files/nodejs"'
如果您只想将此设置为节点的好处,那么请不要担心;你已经很好了。您可以绝对确定使用echo
。
$ echo "[$NODE_BIN1]"
[/cygdrive/c/Program\ Files/nodejs]