检测os类型并设置JAVA_HOME

时间:2014-09-24 17:05:33

标签: bash shell ubuntu-14.04 java-home

我想在bash脚本中检测os类型并相应地设置JAVA_HOME。

if   [[ $(type -t apt-get) == "file" ]]; then os="apt"
    elif [[ $(type -t yum)     == "file" ]]; then os="yum"
    else
            echo "Could not determine os."
    fi

case "$os" in

        apt)    pushd /etc/ \
                echo 'export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/' >> /etc/profile ;;

        yum)    pushd /etc/profile.d/ \
                echo 'export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64/' >> /etc/profile.d/user_env.sh ;;
esac

我试过这个,但似乎没有将导出写入文件。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

我不确定pushd在这里服务的目的是什么,但您不想要\,因为这将是pushd命令行的延续而不是实际运行echo命令。我想,你想:

if   [[ $(type -t apt-get) == "file" ]]; then os="apt"
elif [[ $(type -t yum)     == "file" ]]; then os="yum"
else
    echo "Could not determine os."
fi

case "$os" in
        apt)    echo 'export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/' >> /etc/profile ;;
        yum)    echo 'export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64/' >> /etc/profile.d/user_env.sh ;;
esac

如果你想保留pushd,那就是:

case "$os" in

        apt)    pushd /etc/
                echo 'export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/' >> /etc/profile ;;

        yum)    pushd /etc/profile.d/
                echo 'export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64/' >> /etc/profile.d/user_env.sh ;;
esac