Loading...

文章背景图

Linux Jdk自定义切换脚本

2026-05-19
30
-
- 分钟
|

在环境变量配置文件中添加以下脚本内容 推荐/etc/profile 如下图

脚本本体

jdk() {
    # 定义所有 JDK 路径(新增版本只需在这里加一行)
    local JDK_8="/opt/java/jdk-8.0.471"
    local JDK_11="/opt/java/jdk-11.0.29"
    local JDK_17="/opt/java/jdk-17.0.17"
    local JDK_21="/opt/java/jdk-21.0.9"
    # 想加 JDK_23 直接在上面写一行即可,下面不需要改任何东西

    # ─── 自动收集所有 JDK_ 开头的变量名,提取版本号 ───
    local versions=()
    local var_name
    for var_name in $(compgen -v | grep '^JDK_' | sort -t_ -k2 -n); do
        versions+=("${var_name#JDK_}")
    done

    # ─── 检查输入的版本号是否有效 ───
    local valid=0 v
    for v in "${versions[@]}"; do
        [[ "$1" == "$v" ]] && { valid=1; break; }
    done

    if [[ $valid -eq 0 ]]; then
        echo "Usage: jdk ${versions[*]}" && return
    fi

    # ─── 设置 JAVA_HOME(间接引用 ${!var}) ───
    local var="JDK_$1"
    export JAVA_HOME="${!var}"

    # ─── 移除 PATH 中所有已注册的 JDK bin 路径 ───
    local jdk_path
    for var_name in $(compgen -v | grep '^JDK_'); do
        jdk_path="${!var_name}"
        PATH=${PATH//":${jdk_path}/bin"/}
        PATH=${PATH//"${jdk_path}/bin:"/}
    done
    # 清理残留的 :: 和首尾冒号
    PATH=${PATH//::/:}
    PATH=${PATH#:}
    PATH=${PATH%:}

    # ─── 添加新 JDK bin 到 PATH 开头 ───
    export PATH="$JAVA_HOME/bin:$PATH"

    # ─── 非静默模式显示版本 ───
    if [[ "$2" != "silent" ]]; then
        echo "==> JDK switched to:"
        java -version
    fi
}

# 默认启用 JDK 11
jdk 11 silent

如何使用

控制台输入 jdk ${java版本} 实现切换 注意中间有个空格

root@TskWz:~# jdk 8
==> JDK switched to:
java version "1.8.0_471"
Java(TM) SE Runtime Environment (build 1.8.0_471-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.471-b09, mixed mode)

root@TskWz:~# jdk 11
==> JDK switched to:
java version "11.0.29" 2025-10-21 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.29+8-LTS-387)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.29+8-LTS-387, mixed mode)

原创

Linux Jdk自定义切换脚本

本文链接: Linux Jdk自定义切换脚本

本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

文章目录