如何在 Linux 中切换相同程序的不同版本
创始人
2024-03-01 23:56:45
0

几天前,我们曾经讨论如何在不同的 PHP 版本之间进行切换。在那篇文章中,我们使用 update-alternatives 命令实现从一个 PHP 版本切换到另一个 PHP 版本。也就是说,update-alternatives 命令可以将 系统范围 system wide 默认使用的 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 7.2。

然后,我将进入放置 PHP 应用的 myproject 目录。

$ cd myproject

使用如下命令扫描可用的 PHP 版本:

$ alt scan php

示例输出:

扫描 PHP 版本

可见,我有两个 PHP 版本,即 PHP 5.6 和 PHP 7.2。按下 <空格> 键选中当前可用的版本。选中全部可用版本后,你可以看到图中所示的 叉号 cross mark 。使用上下方向键在版本间移动,点击回车即可保存变更。

选取 PHP 版本

下面运行该命令并选取我们希望在 myproject 目录中使用的 PHP 版本:

$ alt use php

我希望使用 PHP5.6 版本,故我(使用方向键)选取该版本并点击回车键。

现在,你可以在 /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 选题:lujun9972 译者:pinewall 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

Google 杀入、Pel...
Google 杀入、Peloton 踩坑:2026年5月,AI健身...
2026-05-25 04:40:50
豆包输入法macOS版正式...
爱思助手消息,5月12日,继安卓、iOS版本之后,豆包输入法苹果m...
2026-05-15 13:23:42
苹果macOS 26.5正...
IT之家 5 月 12 日消息,苹果今日向 Mac 电脑用户推送了...
2026-05-12 16:02:11
蚂蚁百灵正式开源Ling-...
4月29日,蚂蚁百灵大模型宣布Ling-2.6-flash正式开源...
2026-05-09 18:22:34
Fedora 44 正式发...
Fedora Linux 44 已正式发布,提供多种格式,支持多个...
2026-05-06 06:51:13
苹果macOS 26.5开...
IT之家 4 月 21 日消息,苹果今日向 Mac 电脑用户推送了...
2026-05-06 06:51:07

热门资讯

为什么计量 IT 的生产力如此... 在某些行业里,人们可以根据一些测量标准判定一个人的生产力。比如,如果你是一个零件制造商,可以通过一个...
硬核观察 #885 苹果 AR... 苹果 AR 眼镜被无限期推迟据报道,由于技术上的挑战,苹果公司已经无限期推迟了其轻型增强现实(AR)...
8 个提升你的隐私防护的开源密... 使用一些顶级开源密码管理器,确保你的登录凭证安全无虞。密码管理器是一项非常有用的实用程序。在你想寻找...
值得收藏的 27 个机器学习的... 机器学习 ( Machine Learning ) 有很多方面,当我开始研究学习它时,我发现了各种各...
PHP最佳实践(译) 简介PHP是一门复杂的语言,经过多年折腾,使其不同版本之间高度不一致,有时还有些bug。 每个版本都...
8个有趣的Linux提示与技巧... 我们时不时给你带来关于Linux的提示与技巧。和这个系列保持一致,这里有8个我们从读者收到最有趣的提...
Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
2020 年的 GitHub ... 距离 2020 年结束只剩下区区 24 天,我们即将结束魔幻的 2020 ,迎来新的一年,新的一年或...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
开源新闻速递:openSUSE... 今日关注openSUSE 项目组的 Dominique Leuenberger 在他的周报中说:“这...