linux 中 alternatives 和 update-alternative

linux 中有很多类似的软件,比如编辑器,有 vim, vi, nano 。如果再细分不同的软件还有不同的版本,抛开版本不说。比如 vim 中有 vim 还有 vim.tiny。这样,就会产生一个问题,程序自动运行的时候,会调用那个程序。

比如使用 git 提交代码的时候,可能会自动调用一个编辑器,来提交一些输入。这个编辑器是 vim 还是 Emacs 。当然可以在 git 中配置调用那个编辑器,如果没有配置呢,或者是其他的程序调用呢?

这个时候就可以用 alternatives 来设置一个默认的调用程序。

alternatives 和 update-alternative 的区别

其实两个是同一个程序,alternatives 可以再centos中使用, update-alternative 可以在 debian ubuntu 系统中使用。

alternatives 的中文意思是 ,可供选择的事物。

# centos 
alternatives --version
alternatives version 1.7.6

# debian 
update-alternatives --version
Debian update-alternatives version 1.19.7.

This is free software; see the GNU General Public License version 2 or
later for copying conditions. There is NO warranty.

使用 update-alternative --list 查看可选的软件

 update-alternatives --list editor
/bin/ed
/bin/nano
/usr/bin/vim.tiny

使用 update-alternatives --config editor 配置默认的编辑器

update-alternatives --config editor
There are 3 choices for the alternative editor (providing /usr/bin/editor).

  Selection    Path               Priority   Status
------------------------------------------------------------
  0            /bin/nano           40        auto mode
  1            /bin/ed            -100       manual mode
  2            /bin/nano           40        manual mode
* 3            /usr/bin/vim.tiny   15        manual mode

Press <enter> to keep the current choice[*], or type selection number:

可以看到上面,列出了 4 个编辑器,想添加一个怎么办呢? 使用 update-alternatives: --install

使用 update-alternatives: --install 添加一个可选的软件

# update-alternatives: --install needs <link> <name> <path> <priority>
# which vim
# /usr/local/vim/bin/vim (软件的真实路径)

update-alternatives --install  /usr/bin/vim editor /usr/local/vim/bin/vim 4
update-alternatives: renaming editor link from /usr/bin/editor to /usr/bin/vim

# 查看
update-alternatives --config editor
There are 4 choices for the alternative editor (providing /usr/bin/vim).

  Selection    Path                    Priority   Status
------------------------------------------------------------
  0            /bin/nano                40        auto mode
  1            /bin/ed                 -100       manual mode
  2            /bin/nano                40        manual mode
* 3            /usr/bin/vim.tiny        15        manual mode
  4            /usr/local/vim/bin/vim   4         manual mode

可以看到 vim 已经成功添加。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注