Ubuntu使用脚本将JAVA_HOME路径添加到bashrc不起作用



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

使用以下脚本:

echo "export JAVA_HOME=/usr/lib/jvm/java-7-oracle" >> ~/.bashrc
echo "export PATH=$PATH:$JAVA_HOME/bin" >> ~/.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添加路径。我为其中的每一个获得相同的输出。任何帮助将不胜感激。

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

他们需要被逃脱;例如

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

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

但是,您要非常小心这种对shell"rc"文件的"蛮力"编辑。 这可能很危险。

更好的主意是手动进行更改,或者将设置放入启动基于 Java 的应用程序的相应包装器脚本中

echo只是

输出命令文本,摆脱echo,实际执行命令。

问题是你使用的是双引号。这些评估变量(在本例中为 $JAVA_HOME ,尚未设置(。如果改用单引号,它将输出文本而不是计算值。例如

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

有关详细信息,请参阅 Bash 中单引号和双引号之间的区别。

最新更新