Ubuntu使用脚本添加JAVA_HOME路径到bashrc无法正常工作

时间:2017-02-11 01:53:11

标签: bash shell ubuntu path

我正在尝试编写一个脚本,将JAVA_HOME路径添加到bashrc。但我一直得到错误的输出。

使用以下脚本:

echo "export JAVA_HOME=/usr/lib/jvm/java-7-oracle" >> ~/.bashrc
echo "export PATH=$PATH:$JAVA_HOME/bin" >> ~/.bashrc

我在bashrc中得到了以下输出

export JAVA_HOME=/usr/lib/jvm/java-7-oracle
export PATH=/home/ubuntu/apache-maven-3.3.9/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr$

路径的所需输出为export PATH=$PATH:$JAVA_HOME/bin

这个脚本不只是用于添加java路径,我不想为hadoop,spark和hbase添加路径。我为每个人得到相同的输出。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

正在发生的事情是,在将行添加到.bashrc之前,$ PATH和$ JAVA_HOME正在展开。

他们需要逃脱; e.g。

echo "export PATH=\$PATH:\$JAVA_HOME/bin" >> ~/.bashrc

echo 'export PATH=$PATH:$JAVA_HOME/bin' >> ~/.bashrc

然而,你要非常小心这种"蛮力"编辑shell" rc"文件。这可能很危险。

更好的想法是手动执行更改,或将设置放入启动基于Java的应用程序的相应包装脚本中

答案 1 :(得分:0)

echo只是输出命令文本,摆脱回声,并实际执行命令。

答案 2 :(得分:0)

问题在于您使用的是双引号。这些评估变量(在这种情况下$JAVA_HOME,尚未设置)。如果您改用单引号,它将输出文字而不是评估。 e.g。

echo 'export JAVA_HOME=/usr/lib/jvm/java-7-oracle' >> ~/.bashrc echo 'export PATH=$PATH:$JAVA_HOME/bin' >> ~/.bashrc

有关详细信息,请参阅Difference between single and double quotes in Bash