1alternatives命令参数解释

基本语法:

alternatives --install <链接路径> <命令名称> <实际执行文件路径> <优先级>

各参数含义:

  1. <链接路径>:系统中命令的统一链接位置(固定路径,通常为 /usr/bin/命令名

    • 例如:/usr/bin/java/usr/bin/javac,这是用户实际调用的命令路径

  2. <命令名称>:标识该命令的统一名称(自定义但需保持一致,通常与命令名相同)

    • 例如:javajavac,用于后续切换版本时识别同一类命令

  3. <实际执行文件路径>:对应 JDK 版本中命令的真实路径

    • 例如:/usr/lib/jvm/java-1.8.0-openjdk/bin/java,即具体版本的可执行文件位置

  4. <优先级>:数字值(如 100、200),决定默认版本(数值越大,默认优先级越高)

    • 当未手动切换时,系统会自动选择优先级最高的版本

2.注册 java 命令

1)注册 java

# 注册JDK 8的java命令(优先级100,数值越小优先级越低)
alternatives --install /usr/bin/java java /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.XXX.x86_64/bin/java 100

# 注册JDK 11的java命令(优先级200,更高优先级)
alternatives --install /usr/bin/java java /usr/lib/jvm/java-11-openjdk-11.0.XXX.x86_64/bin/java 200

2)注册 javac 命令

# 注册JDK 8的javac命令
alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.XXX.x86_64/bin/javac 100

# 注册JDK 11的javac命令
alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-11-openjdk-11.0.XXX.x86_64/bin/javac 200

3.切换 java 版本

1)切换 java 版本

alternatives --config java

执行后会显示类似以下列表(编号可能不同):

共有 2 个程序提供“java”。

  选择    命令
-----------------------------------------------
*+ 1           /usr/lib/jvm/java-11-openjdk-11.0.XXX.x86_64/bin/java
   2           /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.XXX.x86_64/bin/java

按 Enter 保留当前选项[+],或者输入选择的编号:

输入对应编号(如 2)并回车,即可切换到 JDK 8。

2)切换 javac 版本

alternatives --config javac

4.验证版本切换结果

执行以下命令确认当前版本:

# 查看java版本
java -version

# 查看javac版本
javac -version

5.删除注册

如需移除某个版本的注册,使用 --remove 命令:

alternatives --remove java /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.XXX.x86_64/bin/java