初六,旧识新悟 —— PATH 环境变量的存在意义

Yijin Wang

2026/02/22

今早起来,决定在笔记本上也配置好 Hugo 环境,所以搜了下 Hugo 在 win 系统的安装。官方给出了三种包管理器安装途径:Chocolately、Scoop 和 Winget。打开 Powershell,准备用 Scoop 安装 Hugo。由于只在安装 Scoop 包管理器那天用过它,现在只剩迷茫:Scoop 当时安装到哪了?Scoop 管理包的安装又放在哪了?以及为何终端输入 where scoop 无效?问寻后,AI 告诉我 where scoop 是 cmd 的命令行,且在 Powershell 里输入 $env:SCOOP 即可找到 Scoop 的安装路径。

我的第一反应,唉唉唉?这和环境变量有什么关系哦? 当我习惯性立即询问 AI 时,思索了下过去应用它的场景:一旦发现无法通过命令行调取某个程序时,我常常会把程序的可执行文件所在路径放到 PATH 环境变量中。所以,是不是可以说 —— 如果我申请输出程序的环境变量,那么呈现的值其实就是程序中可执行文件所在的目录?!PATH 这个环境变量,本身就是一张系统用于查找命令的『路径地图』?

我又联想到,前两周南瑞吴工来集控室教学的那次,他在单位老旧的小红帽系统终端中,输入了查看环境变量的命令 (类似 env)。而我当时没有明白,也忘了具体是为了什么,只记得是关于查看程序或路径。因为当时,我联想不到自己为了能从命令行中调取程序而新增 PATH 的过程和这些有何关系?但是按照今天这个角度来看,输出的 PATH 环境变量就是给出程序可执行文件所在的路径,因为 PATH 环境变量的值就是我告诉它的,让它能够找到。其实这般简单的等价交换,我竟然现在才顿悟…… 我之前并未完全理解环境变量的意义,也并未完全理解为何叫『环境变量』,自然就无法联想到今日回看如此显而易见的关系。

意识到这点后,我有些欣喜,为这种零散于不同时空的知识点在某刻被连接而构起完整的脉络感到奇妙。

第一次见到『环境变量』这个词,是 Python 的安装界面,提示必须勾选 『Add to PATH』,而那时我并不知道这意味着什么。第二次见它,是在屾的家里,我在学习 Python,误删了这个笔记本电脑中所有的 PATH 环境变量。记得那时我在屾的面前,不想但仍表现得非常焦急,以为自己删除了重要而又无法挽回的文件,惶恐又得『繁杂地』再次重新安装 Python,而我正处于低精力状态,难以应付。第三次见到则是在工作中,程师傅要求剪掉一段记录仪中无效图像。于是我想起可以使用 FFmpeg:一个用于处理视频、音频等多媒体文件的开源工具包1。而 FFmpeg 在 windows 系统下便携版的使用需要将其先把 FFmpeg 可执行文件的路径放到 PATH 环境变量中才可对其命令行参数。那段时间,我正好在 Halo 建站,遇到了视频上传无法预览的问题,就是通过 FFmpeg 解决的。所以那天回去后,我便整理了一些内容,发了一篇关于 FFmpeg 的学习笔记,算是间接地较为正式地了解环境变量。再后来就是这个行为的不断重复,但是从未将其与搜索文件路径连接起来,今天却恍然大悟。

在此,我再次搜索浏览器,将获取的知识补充、整理、总结:

  1. PATH 环境变量是为操作系统指定可执行文件搜索路径的清单,让系统能够找到程序。比如,本来需要输入程序可执行文件的绝对路径才能启动它,但现在只需要输入程序名称,系统便会从 PATH 变量列出的目录清单中依次查找,从而调取到对应的可执行文件。

  2. PATH 变量由变量名和变量值组成,它的变量值是一组路径。 例如:

    • 变量名:PATH
    • 变量值:C:\Windows\system32;C:\Program Files\Git\bin;D:\Scoop\shims;...
  3. PATH 环境变量并不等于环境变量,它是环境变量中特殊的一个。其他的环境变量可用作程序间的配置共享。(其他的环境变量的相关内容我还没掌握,就不多说了)

虽然回头看,晚了些,写下来也觉得自己迟钝到没必要再感叹一番,但是还是感到惊喜…… 告诉自己要多想,多问,多学。

果然,知识的掌握是循序渐进的,无法一次性完全认识与理解。那些曾经孤立的点,终会在某个时刻连成线。


  1. 关于 FFmpeg,我写过相关的浅表的学习总结,仅包含一些我用过的指令,放在了我的 Halo 小站里,但想来先不展开了 (Halo 小站目前移动端有些问题),想起当时想写的原因,包含对 FFmpeg 的作者 Fabrice Bellard 的尊敬和佩服。 ↩︎