0

我设置了 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 相同的字符串。

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

4

2 回答 2

1

尝试使用cygpath?

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

这也提供了相同的输出

export NODE_BIN1=`cygpath -d "/cygdrive/c/Program Files/nodejs"`
于 2013-01-15T04:07:21.083 回答
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]
于 2013-01-15T04:12:16.147 回答