https://www.ostechnix.com/how-to-switch-between-different-versions-of-commands-in-linux/
作者 | Sk
譯者 | Andy Song (pinewall) ????共計翻譯:31 篇 貢獻時間:149 天
幾天前,我們曾經討論如何如何在不同的 PHP 版本之間進行切換
[1]。在那篇文章中,我們使用 update-alternatives
命令實現從一個 PHP 版本切換到另一個 PHP 版本。也就是說,update-alternatives
命令可以將系統範圍預設使用的 PHP 版本設定為我們希望的版本。通俗的來說,你可以透過 update-alternatives
命令從系統範圍設定程式的版本。如果你希望可以在不同目錄動態設定不同的程式版本,該如何完成呢?在這種情況下,alt
工具可以大顯身手。alt
是一個命令列工具,可以讓你在類 Unix 系統中切換相同程式的不同版本。該工具簡單易用,是 Rust 語言編寫的自由、開源軟體。
安裝
安裝 alt
工具十分簡單。
執行如下命令,即可在 Linux 主機上安裝 alt
:
$ curl -sL https://github.com/dotboris/alt/raw/master/install.sh | bash -s
下一步,將 shims
目錄新增到你的 PATH 環境變數中,具體操作取決於你使用的 Shell。
對於 Bash:
$ echo 'export PATH="$HOME/.local/alt/shims:$PATH"' >> ~/.bashrc
$ source ~/.bashrc
對於 Zsh:
$ echo 'export PATH="$HOME/.local/alt/shims:$PATH"' >> ~/.zshrc
$ source ~/.zshrc
對於 Fish:
$ echo 'set -x PATH "$HOME/.local/alt/shims" $PATH' >> ~/.config/fish/config.fish
現在 alt
已經安裝完畢!
使用 alt 工具在 Linux 系統中切換相同程式的不同版本
如我之前所述,alt 隻影響當前目錄。換句話說,當你進行版本切換時,只在當前目錄生效,而不是整個系統範圍。
下麵舉例說明。我在我的 Ubuntu 系統中安裝了兩個版本的 PHP,分別為 PHP 5.6 和 PHP 7.2;另外,在 myproject
目錄中包含一些 PHP 應用。
首先,透過命令檢視系統範圍預設的 PHP 版本:
$ php -v
示例輸出:
查詢 PHP 版本
如截圖中所示,我係統中預設的 PHP 版本為 PHP 7.2。
然後,我將進入放置 PHP 應用的 myproject
目錄。
$ cd myproject
使用如下命令掃描可用的 PHP 版本:
$ alt scan php
示例輸出:
掃描 PHP 版本
可見,我有兩個 PHP 版本,即 PHP 5.6 和 PHP 7.2。按下 鍵選中當前可用的版本。選中全部可用版本後,你可以看到圖中所示的叉號。使用上下方向鍵在版本間移動,點選回車即可儲存變更。
選取 PHP 版本
下麵執行該命令並選取我們希望在 myproject
目錄中使用的 PHP 版本:
$ alt use php
我希望使用 PHP5.6 版本,故我(使用方向鍵)選取該版本並點選回車鍵。
設定 PHP 版本
現在,你可以在 /home/sk/myproject
目錄下使用 PHP 5.6 版本啦。
讓我們檢查一下,在 myproject
目錄下是否預設使用 PHP 5.6 版本:
$ php -v
示例輸出:
檢查 PHP 版本
只要你不設定成其它版本,(在該目錄下)將一直使用 PHP 5.6 版本。清楚了嗎?很好!請註意,我們僅在這個目錄下使用 PHP 5.6 版本。在系統範圍內(LCTT 譯註:當然是沒單獨設定過其它版本的目錄下),PHP 7.2 仍是預設的版本。讓我們檢驗一下,請看下圖。
比對 PHP 版本
從上面的截圖中可以看出,我有兩個版本的 PHP:在 myproject
目錄下,使用的版本為 PHP 5.6;在 myproject
外的其它目錄,使用的版本為 PHP 7.2。
同理,你可以為每個目錄設定你希望的程式版本。我這裡使用 PHP 僅用於說明操作,但方法適用於任何你打算使用的軟體,例如 NodeJS 等。
下麵是 NodeJS 的示例影片。
如果你希望在不同軟體包版本下測試你的應用,那麼 alt
是你不錯的選擇。
本次分享到此結束。後續還有更多內容,敬請期待!
乾杯!
via: https://www.ostechnix.com/how-to-switch-between-different-versions-of-commands-in-linux/
作者:SK[3] 選題:lujun9972 譯者:pinewall 校對:wxy
本文由 LCTT 原創編譯,Linux中國 榮譽推出