示例 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
但是重新启动系统后,该命令将起作用。
没有奇迹 - PATH 变量(或其等价物)用于所有操作系统。
如果一个包在安装后立即可用,那是因为它自己安装到了一个已经在 PATH 中的文件夹中。Windows 示例:
C:\WINDOWS\system32
,Linux :/usr/bin
。如果包不是立即可用,那么它将自己安装到自己的文件夹中并将其添加到 PATH。
无需重新启动 - 任何新程序在启动时都将具有当前 PATH。如果您在终端中,只需将其关闭并打开一个新的终端窗口。最多,您可以注销并重新登录,但是重新启动太多了。