分类:
2009-11-24 17:46:59
这 是一个只有
root 才能执行的命令。alternatives
的意思是
“可选择的内容”。假如你的系统中有几个命令功能十分类似,却又不能随意删除,那么可以用
alternatives 来指定一个全局的设置。在
FC3 中,全局默认输入法和
java 系统等等都是用它来进行设置的。它有几种功能,可以用命令行参数来指定。alternatives
--install
代码:
alternatives
--install /etc/X11/xinit/xinput.d/zh_CN xinput-zh_CN
/etc/X11/xinit/xinput.d/scim 100
alternatives --install
/etc/X11/xinit/xinput.d/zh_CN xinput-zh_CN
/etc/X11/xinit/xinput.d/fcitx 99
这两个命令的意思就是将刚才新建的
scim 和 fcitx 两个文件作为
zh_CN 的可选内容。它们的优先级分别是
100 和 99,它们共同的名字是
xinput-zh_CN。
另外一种功能是选择默认值。上面的命令仅仅向数据库中添加了可选内容,接下来当然是进行选择了。可以用两种办法,第一种是
alternatives --auto
代码:
alternatives
--auto xinput-zh_CN
会把默认输入法设置为
scim。(为什么?因为我们在上面指定的优先级是
100,是最高的,fcitx 只有
99)
第二种是 alternatives
--config
代码:
[root@jackbillow
~]# alternatives --config xinput-zh_CN
There are 3 programs which
provide 'xinput-zh_CN'.
Selection
Command
-----------------------------------------------
1
/etc/X11/xinit/xinput.d/iiimf
*+ 2
/etc/X11/xinit/xinput.d/scim
3
/etc/X11/xinit/xinput.d/fcitx
Enter
to keep the current selection[+], or type selection
number:
可以看到系统中已经通过
alternatives --install 添加了三个可选内容。优先级最高的是
`*' 指示的那一个,目前的默认全局使用的是
`+' 指示的那一个。输入数字
3 就会将默认值改为
fcitx,输入回车的话就不做改动。
哪种好一点?它们不会冲突,哪个都可以。要修改优先级怎么办?比如要把
fcitx 的优先级提高成
101,应该怎么办?答案很简单,再运行一次
alternatives --install 就可以了
代码:
alternatives
--install /etc/X11/xinit/xinput.d/zh_CN xinput-zh_CN
/etc/X11/xinit/xinput.d/fcitx 101
需要注意的是,这样做不会修改当前的默认值,只有再运行
alternatives --auto 才会做出选择。或者,用
alternatives --config 也可以。
==========================================================
系统管理:update-alternatives
herbert@natsu:~$ ls -l /usr/bin/editor
lrwxrwxrwx 1 root root 24 2004-09-26 08:48 /usr/bin/editor -> /etc/alternatives/editor
herbert@natsu:~$ ls -l /etc/alternatives/editor
lrwxrwxrwx 1 root root 12 2004-10-27 16:24 /etc/alternatives/editor -> /usr/bin/vim
herbert@natsu:~$
natsu:/home/herbert# update-alternatives --display editor
editor - status is auto.
link currently points to /usr/bin/vim
/bin/ed - priority -100
slave editor.1.gz: /usr/share/man/man1/ed.1.gz
/usr/bin/nvi - priority 19
slave editor.1.gz: /usr/share/man/man1/nvi.1.gz
/bin/nano - priority 40
slave editor.1.gz: /usr/share/man/man1/nano.1.gz
/usr/bin/vim - priority 120
slave editor.1.gz: /usr/share/man/man1/vim.1.gz
/usr/bin/emacs21 - priority 0
slave editor.1.gz: /usr/share/man/man1/emacs.1emacs21.gz
Current `best' version is /usr/bin/vim.
natsu:/home/herbert#
natsu:/home/herbert# update-alternatives --config editor
There are 5 alternatives which provide `editor'.
Selection Alternative
-----------------------------------------------
1 /bin/ed
2 /usr/bin/nvi
3 /bin/nano
*+ 4 /usr/bin/vim
5 /usr/bin/emacs21
Press enter to keep the default[*], or type selection number: 4
Using `/usr/bin/vim' to provide `editor'.
natsu:/home/herbert#
update-alternatives --auto editor
general name -- 这是指一系列功能相似的程序的“公用”名字(包括绝对路径),比如 /usr/bin/editor。 link -- 这是指一个 alternative 在 /etc/alternative 中的名字,比如 editor。 alternative -- 顾名思义,这是指一个可选的程序所在的路径(包括绝对路径),比如 /usr/bin/vim。 |
update-alternatives --install gen link alt pri [--slave sgen slink salt] ...
update-alternatives --remove name path
natsu:/home/herbert# update-alternatives --display java
java - status is auto.
link currently points to /usr/local/j2sdk1.4.2_06/bin/java
/usr/bin/gij-wrapper-3.3 - priority 33
slave java.1.gz: /usr/share/man/man1/gij-wrapper-3.3.1.gz
/usr/local/j2sdk1.4.2_06/bin/java - priority 100
slave java.1.gz: /usr/local/j2sdk1.4.2_06/man/man1/java.1
Current `best' version is /usr/local/j2sdk1.4.2_06/bin/java.
natsu:/home/herbert# update-alternatives --display javac
javac - status is auto.
link currently points to /usr/local/j2sdk1.4.2_06/bin/javac
/usr/bin/gcj-wrapper-3.3 - priority 33
slave javah: /usr/bin/gcjh-wrapper-3.3
slave javac.1.gz: /usr/share/man/man1/gcj-wrapper-3.3.1.gz
slave javah.1.gz: /usr/share/man/man1/gcjh-wrapper-3.3.1.gz
/usr/bin/gcj-wrapper-3.4 - priority 33
slave javah: /usr/bin/gcjh-wrapper-3.4
slave javac.1.gz: /usr/share/man/man1/gcj-wrapper-3.4.1.gz
slave javah.1.gz: /usr/share/man/man1/gcjh-wrapper-3.4.1.gz
/usr/local/j2sdk1.4.2_06/bin/javac - priority 100
slave javah: /usr/local/j2sdk1.4.2_06/bin/javah
slave javac.1.gz: /usr/local/j2sdk1.4.2_06/man/man1/javac.1
slave javah.1.gz: /usr/local/j2sdk1.4.2_06/man/man1/javah.1
Current `best' version is /usr/local/j2sdk1.4.2_06/bin/javac.
natsu:/home/herbert#
update-alternatives --install /usr/bin/javac javac /usr/local/j2sdk1.4.2_06/bin/javac 100 --slave /usr/bin/javah javah /usr/local/j2sdk1.4.2_06/bin/javah --slave /usr/share/man/man1/javac.1.gz javac.1.gz /usr/local/j2sdk1.4.2_06/man/man1/javac.1 --slave /usr/share/man/man1/javah.1.gz javah.1.gz /usr/local/j2sdk1.4.2_06/man/man1/javah.1
update-alternatives --install /usr/bin/java java /usr/local/j2sdk1.4.2_06/bin/java 100 --slave /usr/share/man/man1/java.1.gz java.1.gz /usr/local/j2sdk1.4.2_06/man/man1/java.1