alternatives命令用法

本文介绍 Linux 下的 alternatives 命令,该命令允许用户在系统中安装同一软件的多个版本,并自由切换默认使用的版本。通过具体示例展示了如何使用此命令管理 Java 不同版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

alternatives是Linux下的一个功能强大的命令。只能在root权限下执行。如系统中有几个命令功能十分类似,却又不能随意删除,那么可以用 alternatives 来指定一个全局的设置。

alternatives常用于同一个系统中安装同一软件的多个版本。比如为了开发需要,我需要安装JDK1.4.2,同时还需要JDK1.6.10,我怎么样才能忽略安装路径,按照我自己的意思,使用我想要的java版本呢?

下面为您一一道来。

alternatives的命令行执行如下:
[root@localhost tools]# alternatives 
alternatives version 1.3.36 - Copyright (C) 2001 Red Hat, Inc.
This may be freely redistributed under the terms of the GNU Public License.

usage: alternatives --install <link> <name> <path> <priority>
  [--initscript <service>]
  [--slave <link> <name> <path>]*
  alternatives --remove <name> <path>
  alternatives --auto <name>
  alternatives --config <name>
  alternatives --display <name>
  alternatives --set <name> <path>

common options: --verbose --test --help --usage --version
  --altdir <directory> --admindir <directory>

说明:
alternatives --install <link> <name> <path> <priority>
其中,
install表示安装
link是符号链接
name则是标识符
path是执行文件的路径
priority则表示优先级

以java的安装为例,我的Fedora 8下自带了两种java版本,分别如下:

  Selection Command
-----------------------------------------------
* 1 /usr/lib/jvm/jre-1.7.0-icedtea/bin/java
  2 /usr/lib/jvm/jre-1.5.0-gcj/bin/java


我在目录/tools/jdk安装了java version "1.4.2_19"
[root@localhost test]# alternatives --install /usr/bin/java java /tools/jdk/bin/java 3
[root@localhost test]# alternatives --config java

There are 3 programs which provide 'java'.

  Selection Command
-----------------------------------------------
*+ 1 /usr/lib/jvm/jre-1.7.0-icedtea/bin/java
  2 /usr/lib/jvm/jre-1.5.0-gcj/bin/java
  3 /tools/jdk/bin/java

Enter to keep the current selection[+], or type selection number: 3


我还在目录/tools/jdk6下安装了java version "1.6.0_12"
[root@localhost test]# alternatives --install /usr/bin/java java /tools/jdk6/bin/java 4
[root@localhost test]# alternatives --config java

There are 4 programs which provide 'java'.

  Selection Command
-----------------------------------------------
* 1 /usr/lib/jvm/jre-1.7.0-icedtea/bin/java
  2 /usr/lib/jvm/jre-1.5.0-gcj/bin/java
 + 3 /tools/jdk/bin/java
  4 /tools/jdk6/bin/java

Enter to keep the current selection[+], or type selection number: 4

用alternatives --config java就可以选择你想要的Java版本。
<think>我们正在处理一个关于在Linux中使用`alternatives --config java`命令来显示和配置已安装JDK版本的问题。 根据用户的问题,用户希望知道如何使用该命令来显示已安装的JDK,并且可能进行配置。 在Linux中,`alternatives`命令是一个维护符号链接以确定默认命令的工具,常用于管理同一个系统中多个版本的同一软件。 对于Java开发工具包(JDK),我们经常需要切换不同的版本,例如在OpenJDK和Oracle JDK之间切换,或者在不同版本的JDK之间切换。 步骤: 1. 首先,确保已经安装了多个JDK版本,并且已经通过`alternatives`系统注册。 2. 使用命令`alternatives --config java`可以列出当前系统中所有已注册的Java运行时环境(JRE)的可执行文件,并允许用户选择默认使用哪一个。 但是,注意:`alternatives --config java`配置的是`java`可执行文件(即Java运行时)的版本。如果要配置`javac`(编译器)或其他Java工具的版本,可能需要使用类似的命令,例如`alternatives --config javac`。 具体操作: 在终端中执行以下命令: ```bash sudo update-alternatives --config java ``` 注意:某些系统可能使用`alternatives`命令而不是`update-alternatives`,但通常`update-alternatives`是更常见的命令(在Debian/Ubuntu等系统中)。在Red Hat/CentOS等系统中,命令可能是`alternatives`,但用法类似。 执行命令后,系统会列出所有已注册的Java版本,每个版本前面有一个编号,并提示用户输入编号来选择默认版本。 示例输出: ``` There are 3 choices for the alternative java (providing /usr/bin/java). Selection Path Priority Status ------------------------------------------------------------ 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 auto mode 1 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode * 2 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 manual mode 3 /usr/lib/jvm/oracle-java17/bin/java 1091 manual mode Press <enter> to keep the current choice[*], or type selection number: ``` 用户只需输入想要选择的版本对应的数字,然后按回车即可。 如果用户想要查看当前系统中所有已安装的Java版本(包括那些尚未被`alternatives`管理的),可以使用: ```bash ls /usr/lib/jvm/ ``` 或者使用以下命令查看当前Java版本: ```bash java -version ``` 另外,如果用户安装了一个新的JDK,并且想要将其加入到`alternatives`系统中,可以使用如下命令(以添加一个Java运行时为例): ```bash sudo update-alternatives --install /usr/bin/java java /path/to/java/executable priority ``` 其中,`/path/to/java/executable`是Java可执行文件的完整路径(例如`/usr/lib/jvm/jdk1.8.0_291/bin/java`),`priority`是一个数字,数字越大表示优先级越高(在自动模式下会选择优先级最高的)。 引用说明: 根据用户提供的引用内容,我们看到: 引用[1]中提到了使用`alternatives --config java`命令,并指出Java安装目录。 引用[2]中提到了使用`update-alternatives --config java`命令来确保特定的Java版本成为默认运行时。 因此,我们可以基于这些信息来回答。 注意:用户要求生成相关问题,我们将在回答后提出几个相关问题。</think>### 如何在Linux中使用 `alternatives --config java` 显示和配置JDK版本 在Linux系统中,`alternatives` 命令用于管理软件版本(如JDK)。以下是操作步骤: #### 1. **显示已安装的JDK** 执行命令: ```bash sudo update-alternatives --config java ``` **输出示例**: ``` There are 3 choices for the alternative java (providing /usr/bin/java). Selection Path Priority Status ------------------------------------------------------------ 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 auto mode 1 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode * 2 /usr/lib/jvm/java-17-oracle/bin/java 1091 manual mode ``` - 带 `*` 的表示当前默认版本。 - `auto mode` 表示系统自动管理的版本。 - `manual mode` 表示用户手动选择的版本。 #### 2. **切换JDK版本** 在交互界面中输入对应版本的编号(如 `0`、`1`、`2`),按回车确认: ``` Press <enter> to keep the current choice[*], or type selection number: 1 ``` 切换后通过 `java -version` 验证: ```bash java -version # 输出示例:openjdk version "1.8.0_381" ``` #### 3. **管理其他Java工具** 如需配置编译器 (`javac`): ```bash sudo update-alternatives --config javac ``` #### 4. **添加新JDKalternatives** 若新安装的JDK未自动注册: ```bash sudo update-alternatives --install /usr/bin/java java /path/to/java/bin/java priority ``` **示例**: ```bash sudo update-alternatives --install /usr/bin/java java /usr/java/jdk1.7.0_80/bin/java 1000 ``` #### 注意事项 - **权限要求**:需 `sudo` 权限执行。 - **路径差异**:JDK路径可能因发行版不同而变化(如 `/usr/lib/jvm/` 或 `/usr/java/`)。 - **优先级**:数字越大优先级越高,在自动模式下会选择优先级最高的版本[^1][^2]。 --- ### 相关问题 1. 如何验证JDK切换是否生效? 2. 如果 `update-alternatives --config java` 未列出已安装的JDK,如何手动添加? 3. 如何永久删除 `alternatives` 中注册的旧版JDK路径? 4. 除了JDK,`update-alternatives` 还能管理哪些软件的版本? [^1]: 注意:`/usr/java/jdk1.7.0_80/bin/java` 需替换为实际JDK路径 [^2]: 使用命令 `update-alternatives --config java` 交互式选择版本
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值