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 java
設置默認的java環境 vim
sudo update-alternatives --install /usr/bin/java java /data/soft/jdk/bin/java 10000 編輯器