软件包安装程序如何使软件包在任何地方可用,而无需将其添加到环境变量的路径中?

软件包安装程序如何使软件包在任何地方可用,而无需将其添加到环境变量的路径中?

例1:

当我使用包管理器(例如 JavaScript 包管理器)安装包时npm,该包立即可从任何终端上的任何目录运行:

$ npm install -g redis-cli

我甚至不需要重新启动我的笔记本电脑,现在我就可以使用这个命令:

$ rdcli

示例 2:

再举一个例子,让我们使用 Python 包管理器安装一个 Python 模块pip

$ pip install rq

现在此命令可以在任何地方使用,无需重新启动操作系统:

$ rq

相比之下:

相反,当我将文件夹添加到环境变量路径时,我必须重新启动系统:

C:\Program Files\smartmontools\bin

现在重新启动或执行这个技巧,我可以使用这个命令:

$ smartctl.exe

有人能解释一下包管理器在后台做了什么技巧吗?


额外的:

我注意到的一件事是,当您使用包管理器安装包并且尚未重新启动系统时,它仅适用于终端,如 CMD、Powershell 或 MinTTY,其他应用程序还看不到它,例如如果您在终端中运行此命令:

winpty rdcli

您将收到此错误:

winpty: error: cannot start 'rdcli': Not found in PATH

但重新启动系统后,该命令将会起作用。

答案1

没有奇迹——PATH 变量(或其等效项)在所有操作系统中都使用。

如果包安装后立即可用,那是因为它将自身安装到 PATH 中已有的文件夹中。Windows 示例:C:\WINDOWS\system32,Linux /usr/bin:。

如果该包不是立即可用的,那么它会将自身安装到自己的文件夹中并将其添加到 PATH。

无需重启 - 任何新程序在启动时都会具有当前 PATH。如果您在终端中,只需关闭它并打开一个新的终端窗口。最多,您可以注销并再次登录,但重启太多了。

相关内容