`echo export“JAVA_HOME = \ $(/ usr / libexec / java_home)”>> 〜/ .bash_profile`,命令的每个部分实际上意味着/做什么?

时间:2016-08-14 11:17:03

标签: java macos terminal

要在mac上设置JAVA_HOME,只需在终端中输入echo export "JAVA_HOME=\$(/usr/libexec/java_home)" >> ~/.bash_profile即可。

但是,我只是想知道是否有人可以解释命令的每个部分实际上意味着/做什么?

1 个答案:

答案 0 :(得分:1)

~/.bash_profile是一个私有的,即用于特定用户的bash shell启动文件。换句话说,当您打开shell(命令行)时,shell程序会读取此文件以了解应该对initialize the shell environment执行的操作。

JAVA_HOME是各种程序用来查找Java二进制文件和其他Java相关文件的环境变量。您可以通过在命令行中执行export JAVA_HOME=$(/usr/libexec/java_home)来设置变量,但它仅在该shell会话期间有效。

因此,为了使JAVA_HOME变量在会话之间保持不变,您可以使用~/.bash_profileexport命令附加到此文件并在echo中自动设置它并重定向。 echo打印一条消息,>>将输出重定向到~/.bash_profile文件中。请注意,双倍大于号(>>) - 表示 追加 ,而不是>,这意味着 <强>重写 的。

为了处理echo命令的参数&#34;按原样#34;如果不解释它,则参数用双引号括起来并且美元符号被转义(即\$)。

总而言之,执行命令后,您应该在~/.bash_profile文件的底部看到以下行(运行cat ~/.bash_profile以查看文件的内容):

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

$(command)语法用于command substitution/usr/libexec/java_home将被执行,其输出将分配给JAVA_HOME