You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ubuntu中通过脚本自动配置JAVA_HOME与M2_HOME环境变量

解决Ubuntu 22.04中自动配置JAVA_HOME和M2_HOME的问题

问题分析

你当前脚本的核心问题是环境变量路径配置错误,以及临时export无法持久化:

  • 通过snap安装的OpenJDK,你指定的/var/snap/openjdk/current/openjdk.env是配置文件而非JDK根目录,正确路径是/var/snap/openjdk/current
  • 用apt安装的Maven,/usr/bin/maven是执行脚本的路径,M2_HOME应该指向Maven的安装根目录/usr/share/maven
  • 脚本中直接追加到~/.bashrc会导致重复写入,建议先判断变量是否已存在再添加

修正后的完整脚本

#!/bin/bash

OC_VERSION="4.5.0-0.okd-2020-07-14-153706-ga"
OC_TAR_NAME="openshift-client-linux-4.5.0-0.okd-2020-07-14-153706-ga.tar.gz"

echo "Installing Tools..."
sudo apt-get update -y
sudo apt-get remove openjdk-11-jre-headless -y

sudo apt-get update -y

echo "Installing java..."
sudo snap install openjdk
# 临时设置当前脚本执行环境的JAVA_HOME,仅对本次脚本运行有效
export JAVA_HOME=/var/snap/openjdk/current
export PATH=$JAVA_HOME/bin:$PATH

echo "Installing maven..."
sudo apt-get install maven -y
# 临时设置当前脚本执行环境的M2_HOME
export M2_HOME=/usr/share/maven
export PATH=$M2_HOME/bin:$PATH

echo "Installing helm..."
sudo snap install helm --classic

echo "Installing kubelogin..."
sudo snap install kubelogin

echo "Installing kubectl..."
sudo snap install kubectl --classic

echo "Installing powershell..."
sudo snap install powershell --classic

echo -e "Installing git..."
sudo snap install git-ubuntu --classic

echo -e "Installing postgresql..."
sudo sh -c 'echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get -y install postgresql

echo -e "Downloading openshift-client..."
sudo wget https://github.com/openshift/okd/releases/download/4.5.0-0.okd-2020-07-14-153706-ga/${OC_TAR_NAME}

echo -e "Extracting openshift-client..."
sudo tar -zxvf ${OC_TAR_NAME} -C /usr/local/bin

# Remove downloaded tar files
sudo rm -f ${OC_TAR_NAME}

# 持久化配置环境变量到~/.bashrc,避免重复写入
if ! grep -q "export JAVA_HOME=/var/snap/openjdk/current" ~/.bashrc; then
    echo 'export JAVA_HOME=/var/snap/openjdk/current' >> ~/.bashrc
    echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
fi

if ! grep -q "export M2_HOME=/usr/share/maven" ~/.bashrc; then
    echo 'export M2_HOME=/usr/share/maven' >> ~/.bashrc
    echo 'export PATH=$M2_HOME/bin:$PATH' >> ~/.bashrc
fi

# 让当前脚本生效(仅对当前脚本子shell有效,新终端需重新登录或手动source ~/.bashrc)
source ~/.bashrc

echo "环境变量配置完成,新终端登录后生效!"

关键修正点说明

  1. JAVA_HOME路径修正:snap安装的OpenJDK根目录是/var/snap/openjdk/current,该目录下包含完整的JDK文件结构(bin、lib等)
  2. M2_HOME路径修正:apt安装的Maven默认根目录为/usr/share/maven,/usr/bin/mvn只是指向该目录下的执行脚本
  3. 避免重复写入:用grep -q判断变量是否已存在于.bashrc,防止多次执行脚本时重复追加配置
  4. 临时+持久化结合:脚本中临时export保证安装过程中工具能调用到Java/Maven,写入.bashrc保证后续登录会话生效

验证方法

执行完脚本后,新开一个终端窗口,运行以下命令验证:

echo $JAVA_HOME
echo $M2_HOME
mvn -v
java -version

如果输出正确的路径和版本信息,说明配置成功。

内容的提问来源于stack exchange,提问作者Kalyana Srinivas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 07:45:03