我正在尝试编写一个脚本,它将向bashrc添加JAVA_HOME路径。但我总是得到错误的输出。
使用以下脚本:
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添加路径。每个输出结果都是相同的。任何帮助都将不胜感激。
发布于 2017-02-11 02:04:37
正在发生的情况是,在将行添加到$PATH之前,.bashrc和$JAVA_HOME正在展开。
他们需要逃跑。
echo "export PATH=\$PATH:\$JAVA_HOME/bin" >> ~/.bashrc或
echo 'export PATH=$PATH:$JAVA_HOME/bin' >> ~/.bashrc但是,您需要非常小心地编辑这种“蛮力”的shell "rc“文件。可能会很危险。
更好的方法是要么手工进行更改,要么将设置放入启动基于Java的应用程序的相应包装脚本中。
发布于 2017-02-11 02:03:59
echo只是输出命令文本,去掉回显,然后实际执行命令。
发布于 2017-02-11 02:05:30
问题是你使用的是双引号。这些计算变量(在本例中为$JAVA_HOME,尚未设置)。如果您使用单引号,它将输出文字而不是计算值。例如:
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。
https://stackoverflow.com/questions/42171338
复制相似问题