我正在尝试编写一个脚本,该脚本将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,实际执行命令。
问题是你使用的是双引号。这些评估变量(在本例中为 $JAVA_HOME
,尚未设置(。如果改用单引号,它将输出文本而不是计算值。例如
echo 'export JAVA_HOME=/usr/lib/jvm/java-7-oracle' >> ~/.bashrc
echo 'export PATH=$PATH:$JAVA_HOME/bin' >> ~/.bashrc
有关详细信息,请参阅 Bash 中单引号和双引号之间的区别。