update-alternatives使用方法

本文详细介绍了Linux系统中如何通过`update-alternatives`命令来管理多个功能相似的编辑器,如vim、nano等。通过展示具体操作步骤,包括查看可选命令、配置默认编辑器、自动与手动模式切换、优先级设定以及添加、删除替代方案等功能,旨在帮助用户高效地在不同编辑器间进行选择和管理。

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

Linux 发展到今天,可用的软件已经非常多了。这样自然会有一些软件的功能大致上相同。例如,同样是编辑器,就有 nvi、vim、emacs、nano,而且我说的这些还只是一部分。大多数情况下,这样的功能相似的软件都是同时安装在系统里的,可以用它们的名称来执行。例如,要执行 vim,只要在终端下输入 vim 并按回车就可以了。不过,有些情况下我们需要用一个相对固定的命令调用这些程序中的一个。例如,当我们写一个脚本程序时,只要写下 editor,而不希望要为“编辑器是哪个”而操心。Debian 提供了一种机制来解决这个问题,而 update-alternatives 就是用来实现这种机制的。

1)首先要介绍的参数是 --display。它使我们可以看到一个命令的所有可选命令。执行:
update-alternatives --display editor
可以看到我的机器上的所有可以用来被 editor 链接的命令。

2)--config。这个选项使我们可以选择其中一个命令程序来作为editor,执行:
update-alternatives --config editor

首先,update-alternatives 在一般情况下是由postinst 和 prerm 这样的安装脚本自动调用的,所以一个 alternative 的状态有两种:自动和手动。每个 alternative 的初始状态都是自动。如果系统发现管理员手动修改了一个 alternative,它的状态就从自动变成了手动,这样安装脚本就不会更新它了。如果你希望将一个 alternative 变回自动,只要执行代码:
update-alternatives --auto editor

general name -- 这是指一系列功能相似的程序的“公用”名字(包括绝对路径),比如 /usr/bin/editor。
link -- 这是指一个 alternative 在 /etc/alternative 中的名字,比如 editor。
alternative -- 顾名思义,这是指一个可选的程序所在的路径(包括绝对路径),比如 /usr/bin/vim。

-auto,--display 和 --config 跟的都是 link。我们要说的第三个概念是优先级。这个比较简单,当然优先级越高的程序越好啦。最后一个概念是主和从的 alternative。想想看,你将 /usr/bin/editor 链接到了 vim,可是当你执行 man editor 时看到的却是 emacs 的 manpage,你会做何感想呢?这就引出了主和从 alternative 的概念了:当更新主的 alternative 时,从的 alternative 也会被更新。

另外两个选项:
第一个是 --install。它的格式是:  代码:

update-alternatives --install gen link alt pri [--slave sgen slink salt] ...

gen,link,alt,pri 分别是我们上面说过的。如果需要从的 alternative,你可以用--slave 加在后面。如果你在向一个已经存在的 alternative 组中添加新的 alternatives,该命令会把这些 alternatives 加入到这个已经存在的 alternative 组的列表中,并用新的可选命令作为新的命令;否则,将会建立一个新的自动的 alternative组。

呜呼!我加入了一个错误的 alternative。我不想要这个 alternative 了。在这种情况
下,可以执行下面的命令:代码:

update-alternatives --remove name path

 

 

首先,你不需要再/etc/alternatives/下面建立任何你想设置的链接名称,因为这完全可以通过update-alternative --install命令来实现;而且你也不需要在/usr/bin/目录下建立相关链接名称,理由同上。你只需要确定这几个功能类似的软件的源目的地,然后执行如下命令:(以gcc为例)
#sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-3.3 100(这个优先级100必须键入)
#sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.1 90
#sudo update-alternatives --install /usr/bin/gcc gcc /ur/bing/gcc-4.2 80
以此类推。在选择时使用如下命令即可:
#sudo update-alternatives --config gcc
以上都是在UBUNTU上测试通过的。在红帽等Linux系统上有类似的alternatives命令,用法相同。

`update-alternatives --install` 是一个用于在多个版本的相同程序之间切换的命令。它允许系统管理员设置不同程序的优先级,并让用户选择默认使用哪个版本。具体用法如下: ### 命令格式 ```bash sudo update-alternatives --install <link> <name> <path> <priority> ``` ### 参数说明 - `<link>`: 目标链接文件的路径(通常是 `/usr/bin` 下的可执行文件)。 - `<name>`: 交替项的名称(例如 `gcc`)。 - `<path>`: 实际可执行文件的路径(例如 `/usr/bin/gcc-9`)。 - `<priority>`: 设置该版本的优先级,数值越大优先级越高。 ### 示例 假设你想安装两个版本的 GCC 并设置它们的优先级: 1. **安装 GCC 11 和 GCC 9** ```bash sudo apt-get install gcc-11 sudo apt-get install gcc-9 ``` 2. **添加到 alternatives 系统** ```bash sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 40 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 50 ``` 3. **配置默认版本** ```bash sudo update-alternatives --config gcc ``` 运行 `--config` 命令后,系统会提示你选择默认使用的 GCC 版本。 ### 文档中的示例 在提供的文档中,有以下几个 `update-alternatives --install` 命令: 1. **安装 GCC 编译器** ```bash sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 40 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 50 ``` 2. **安装 G++ 编译器** ```bash sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 40 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 50 ``` 3. **安装 GFortran 编译器** ```bash sudo update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-11 40 sudo update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-9 50 ``` 这些命令将不同的编译器版本添加到 `alternatives` 系统中,并设置了各自的优先级。你可以通过 `--config` 命令来选择默认使用的版本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值