【问题标题】:Ubuntu using script to add JAVA_HOME path to bashrc not workingUbuntu使用脚本将JAVA_HOME路径添加到bashrc不起作用
【发布时间】:2017-06-29 12:10:32
【问题描述】:

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

【问题讨论】:

  • 如果>> ~/.bashrc 部分被删除,命令的输出是什么?

标签: bash shell ubuntu path


【解决方案1】:

echo只是输出命令文本,去掉echo,实际执行命令。

【讨论】:

    【解决方案2】:

    发生的情况是 $PATH 和 $JAVA_HOME 在该行添加到 .bashrc 之前被扩展。

    他们需要被逃脱;例如

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

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

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

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

    【讨论】:

      【解决方案3】:

      问题是您使用了双引号。这些评估变量(在本例中为 $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

      【讨论】:

        猜你喜欢
        • 2013-12-02
        • 2021-11-27
        • 2015-10-19
        • 1970-01-01
        • 1970-01-01
        • 2021-11-13
        • 2012-11-17
        • 1970-01-01
        • 2012-07-05
        相关资源
        最近更新 更多