我正在尝试编写一个脚本,将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添加路径。我为每个人得到相同的输出。任何帮助将不胜感激。
答案 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。