在Cygwin中导出带空格的JAVA_HOME

use*_*893 10 cygwin export space java-home

我正在尝试使用此命令在Cygwin中设置我的JAVA_HOME:

export JAVA_HOME="/cygdrive/c/Program Files/Java/jdk1.7.0_10"
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时cd $JAVA_HOME,我会收到这个错误:

$ cd $JAVA_HOME
-bash: cd: /cygdrive/c/Program: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我尝试引用,并逃避空间(即,\),但没有一个工作.知道还有什么呢?

谢谢,

小智 16

我也遇到了这个问题,我看到很多帖子,但没有真正奏效.我做了一个小技巧,事情就开始了.

我的JAVA_HOME设置为C:/ Program Files/Java/jdk1.7.0_23.问题是Program Files目录,我得到了同样的错误.

在Windows中,为每个目录创建了一个短名称,其空间没有空格.您可以通过在命令提示符下运行dir/X命令来查看它.Program Files的简称是PROGRA~1.

在通过我的电脑的Windows env变量中,我将JAVA_HOME更改为C:/PROGR~1/Java/jdk1.7.0_23,在hadoop-env.sh中,我将JAVA_HOME更改为/ cygdrv/c/PROGRA~1/Java/jdk1. 7.0_23.

它工作正常.


Ant*_*nko 7

你设置JAVA_HOME正确.现在让我们也cd正确.

cd "$JAVA_HOME"
Run Code Online (Sandbox Code Playgroud)


use*_*370 5

To avoid using the tedious Windows environment variables, and also use the actual path string copied from Windows explorer, I suggest adding the following to your startup script:

             TMP=`cygpath -sw "C:\Program Files\Java\jdk1.8.0_31"`
export JAVA_HOME=`cygpath -u $TMP`
Run Code Online (Sandbox Code Playgroud)

The first cygpath invocation obtains a short, windows path; the second converts it to unix format, which works fine in cygwin.

This will also now work fine:

$ cd $JAVA_HOME
Run Code Online (Sandbox Code Playgroud)