bash Mac echo $JAVA_HOME 返回空白

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/47006966/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-18 16:34:00  来源:igfitidea点击:

Mac echo $JAVA_HOME return blank

javabash

提问by user1034127

I don't know why echo $JAVA_HOME return blank

我不知道为什么 echo $JAVA_HOME 返回空白

Abdelmajids-iMac:~ majid$ vi .profile

Abdelmajids-iMac:~ majid$ vi .profile

export PATH=/usr/local/bin:(...)
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load 
RVM into a shell session *as a function*
export JAVA_HOME=$(/usr/libexec/java_home)
~                                                                                                    

~      


Abdelmajids-iMac:~ majid$ /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home
Abdelmajids-iMac:~ majid$ vi .bash_profile
Abdelmajids-iMac:~ majid$ source .bash_profile
-bash: .bash_profile: line 1: syntax error near unexpected token `('
-bash: .bash_profile: line 1: `export PATH=/usr/local/bin:(...)'
Abdelmajids-iMac:~ majid$ echo  $JAVA_HOME

Abdelmajids-iMac:~ majid$ 

回答by pradosh nair

Statement export JAVA_HOME=$(/usr/libexec/java_home)seems incorrect; bash would have evaluated the information within $() and returned a blank.

陈述export JAVA_HOME=$(/usr/libexec/java_home)似乎不正确;bash 会评估 $() 中的信息并返回一个空白。

It should just be export JAVA_HOME=$(echo /usr/libexec/java_home)or export JAVA_HOME=/usr/libexec/java_home.

它应该只是export JAVA_HOME=$(echo /usr/libexec/java_home)export JAVA_HOME=/usr/libexec/java_home

The usage of $() is discussed in this link. Difference between ${} and $() in bash scripting.

此链接中讨论了 $() 的用法。bash 脚本中 ${} 和 $() 之间的区别

回答by jprism

$(str) where str should be a command. In your case, $(/usr/libexec/java_home) will return nothing. Just use

$(str) 其中 str 应该是一个命令。在您的情况下, $(/usr/libexec/java_home) 将不返回任何内容。只需使用

export JAVA_HOME=/usr/libexec/java_home