Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在终端上导出路径中有空格的环境变量_Java_Linux_Terminal - Fatal编程技术网

Java 如何在终端上导出路径中有空格的环境变量

Java 如何在终端上导出路径中有空格的环境变量,java,linux,terminal,Java,Linux,Terminal,我刚刚下载了Java,根据Java控制面板,可执行文件位于以下目录: /Library/Internet插件/JavaAppletPlugin.plugin/Contents/Home/bin/java 现在我想导出一个env变量JAVA\u HOME,如下所示: >export JAVA_HOME=“/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java” 但是当我打印出变量时,所有的空间都被

我刚刚下载了Java,根据Java控制面板,可执行文件位于以下目录:
/Library/Internet插件/JavaAppletPlugin.plugin/Contents/Home/bin/java

现在我想导出一个env变量
JAVA\u HOME
,如下所示:

>export JAVA_HOME=“/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java”
但是当我打印出变量时,所有的空间都被破坏了

>$JAVA_HOME
-bash: “/Library/Internet: No such file or directory
如何正确地将此路径导出到变量

现在有另一个答案,但这个答案不起作用:

>SOME_PATH="/mnt/someProject/some path"
>$SOME_PATH
-bash: /mnt/someProject/some: No such file or directory
用上面的另一个答案:

>SOME_PATH=/mnt/someProject/some\ path
>$SOME_PATH
-bash: /mnt/someProject/some: No such file or directory
这是我的bash版本(我在macOS 10.14.5上):


必须使用双引号或单引号:解释器将“视为任何字符,因此试图查找程序
”/Library/Internet

export JAVA_HOME='/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java'
除了单引号和反斜杠之外,您不需要用单引号转义任何内容

请注意,当您直接使用它时,如
$JAVA\u HOME foobar.Main
,您还需要添加双引号,因为在这种情况下
$JAVA\u HOME
包含空间:

"$JAVA_HOME" foobar.Main
某些终端可能在没有双引号的情况下工作,但您不应该依赖它

但是,
JAVA\u HOME
是错误的:它应该指向包含
/bin/JAVA
的文件夹:

export JAVA_HOME="/c/Program Files/Java/jdk1.8.0_202"
export PATH="$JAVA_HOME/bin:$PATH"

在这种情况下,您只需调用java,shell就会解析可执行文件。

单引号和双引号,一切正常:

[iahmad@web-prod-ijaz001 ~]$ 
[iahmad@web-prod-ijaz001 ~]$ 
[iahmad@web-prod-ijaz001 ~]$ 
[iahmad@web-prod-ijaz001 ~]$ echo $BASH_VERSION
4.4.12(1)-release
[iahmad@web-prod-ijaz001 ~]$ 
[iahmad@web-prod-ijaz001 ~]$ export JAVA_HOME="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java"
[iahmad@web-prod-ijaz001 ~]$ 
[iahmad@web-prod-ijaz001 ~]$ 
[iahmad@web-prod-ijaz001 ~]$ echo $JAVA_HOME
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java
[iahmad@web-prod-ijaz001 ~]$ 
[iahmad@web-prod-ijaz001 ~]$ 
[iahmad@web-prod-ijaz001 ~]$ export JAVA_HOME='/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java'
[iahmad@web-prod-ijaz001 ~]$ 
[iahmad@web-prod-ijaz001 ~]$ echo $JAVA_HOME
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java
[iahmad@web-prod-ijaz001 ~]$ 
[iahmad@web-prod-ijaz001 ~]$ 

我认为您使用的引号(“)不是ASCII引号(“或”)。

可能与我尝试过的答案重复,但不起作用(请参见上面的编辑)。您可以尝试您的原始语句,但不使用““并使用\?我链接到的问题的公认答案的第三个选项来转义空格。如果您正在做cd,请使用eval:肯定有效的方法是
$export JAVA_HOME=“path with spaces”
,然后
$”$JAVA_HOME”
-不确定你是否有能力这样做。这肯定不是正确的答案。你测试了吗?测试你写的东西,然后解释什么不起作用,因为另一个答案是经过投票表决的,并且解释了相同的问题。我在Windows上,而不是Mac上,虽然路径不同,但这是可行的(/c/Program Files/Java/jdk1.8.0_202)。是的,路径应该是“bin/Java”之前的内容,因为这就是JAVA_HOME应该是什么…是的,当您在$JAVA_HOME中有一个空格时,调用它时必须引用它。为什么它只在您放置“echo”时才起作用。为什么没有echo它就不能正常工作?echo只是查看/确认值,不需要其他变量:),您的脚本/应用程序无论如何都会选择变量是的-但是放置“echo”有什么区别在终端行上与不将其放在env变量之前查看其值相比?忘记脚本-仅从终端上。区别在于,如果不将echo放在终端上,只写变量名,shell将无法识别该命令是什么,并抛出错误
[iahmad@web-prod-ijaz001 ~]$ 
[iahmad@web-prod-ijaz001 ~]$ 
[iahmad@web-prod-ijaz001 ~]$ 
[iahmad@web-prod-ijaz001 ~]$ echo $BASH_VERSION
4.4.12(1)-release
[iahmad@web-prod-ijaz001 ~]$ 
[iahmad@web-prod-ijaz001 ~]$ export JAVA_HOME="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java"
[iahmad@web-prod-ijaz001 ~]$ 
[iahmad@web-prod-ijaz001 ~]$ 
[iahmad@web-prod-ijaz001 ~]$ echo $JAVA_HOME
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java
[iahmad@web-prod-ijaz001 ~]$ 
[iahmad@web-prod-ijaz001 ~]$ 
[iahmad@web-prod-ijaz001 ~]$ export JAVA_HOME='/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java'
[iahmad@web-prod-ijaz001 ~]$ 
[iahmad@web-prod-ijaz001 ~]$ echo $JAVA_HOME
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java
[iahmad@web-prod-ijaz001 ~]$ 
[iahmad@web-prod-ijaz001 ~]$