导出$(/ something)和“something”之间的bash差异

时间:2014-05-06 02:41:57

标签: bash maven

我尝试设置我的JAVA_HOME变量以开始使用maven。这就是我的bash配置文件(在我的Mac上)

export JAVA_HOME="/usr/libexec/java_home"

当我运行$JAVA_HOME -V时似乎工作得很好,但是maven并没有认为它设置得当。我已经阅读了一些博客:

export JAVA_HOME=$(/usr/libexec/java_home)

有什么区别?什么是第二个更好?

3 个答案:

答案 0 :(得分:3)

/usr/libexec/java_home不是Java主目录本身的路径,而是可执行文件,其输出是主文件夹的路径。

这就是为什么你需要第二种形式,它使用命令替换($(...))来捕获所述可执行文件的输出并将其分配给变量。

答案 1 :(得分:1)

第一个实例将JAVA_HOME的值设置为字符串"/usr/libexec/java_home"。第二个将其设置为命令/usr/libexec/java_home的标准输出。

尝试运行/usr/libexec/java_home以查看其输出结果。这可能是您希望将实际JAVA_HOME设置为。

答案 2 :(得分:1)

bash中的

$(命令)执行括号中的任何命令。

例如

$ echo $(echo hello $(echo world))

结果

hello world

,而

export JAVA_HOME="string" 

只需将变量JAVA_HOME设置为该字符串

即可