大多数操作系统都有环境变量,包括 Windows、MacOS 和 Linux。就像在编程语言中一样,环境变量可以被调用,使用它们的值,可以存储一个数字、一个位置或任何其他定义的值。
环境变量是在 Windows 95 中引入的,此后随着每一个 Windows 版本的推出,环境变量也经历了多次迭代。这些可以用来快速访问某些目录,而不是输入完整的路径。
环境变量可以被编辑和操作,或者你甚至可以添加新的环境变量。在这篇文章中,大眼仔讨论了许多不同的 Windows 环境变量和它们的作用,以及你需要知道的关于它们的一切。
本指南适用于所有版本的 Windows,包括 Windows XP、Windows Vista、Windows 7、Windows 8、Windows 10 和 Windows 11。
Windows 环境变量
什么是环境变量
环境变量是可以在你的系统中使用的变量。就像在编程中一样,变量包含一个值,在需要时可以改变或调用。环境变量也是如此,但可以在整个范围内使用。
你可以在 Windows 中使用环境变量来存储经常使用的位置,这样你就不必每次都把它们打出来,或者暂时改变程序的行为方式。环境变量通常在脚本或程序/应用程序中使用。
例如,你可以创建一个名为 TEMP 的环境变量,指向一个与 Windows 默认的 TEMP 文件夹不同的文件夹。然后,当一个程序需要存储临时文件时,它将使用你指定的 TEMP 文件夹,而不是默认文件夹。
提示:如果你使用的是 Linux 或 MacOS,环境变量可以在 .bashrc 或 .profile 文件中设置。
在层次结构中,有 3 种类型/范围的环境变量:
- 机器
- 用户
- 进程
在顶端,你有机器或系统环境变量。这可以在整个系统中使用,而不管哪个用户登录了。然后是用户环境变量。这是为每个用户账户单独定义的,只限于该账户。
然后你有进程变量,它只限于进程,不能被编辑或创建。终端用户看不到或与进程变量有任何关系。
此外,如果在一个以上的范围内有一个同名的环境变量,那么在较低范围内的变量将取代层次结构中较高的变量的值。
例如,通用环境变量 “TEMP “在所有作用域中都可用,其值如下:
- 机器: C:\Windows\Temp
- 用户: C:\Users\[Username]\AppData\Local\Temp
- 进程: C:\Users\[Username]\AppData\Local\Temp
因此,使用 “Temp”变量将调用为进程作用域设置的值。如果这个作用域中没有名为 “Temp”的变量,那么它将使用用户作用域的值,以此类推。
你可以使用这些变量来快速访问一个直接变量。例如,在运行命令框中键入”%HOMEPATH%”将打开用户的主目录。
你也可以编辑这个变量以包括路径中的一个子目录,比如通过输入”%HOMEPATH%\Deskto”打开用户账户的桌面。
什么是环境变量作用域
正如大眼仔前面提到的,环境变量有 3 个作用域。机器/系统、用户和进程。这些作用域定义了变量的限制和它们可以被使用的地方。
下面你将看到对不同类型的环境变量作用域的更详细的解释。
- 系统/机器
在这个范围内定义的环境变量可以被系统中的任何人使用。这些类型的变量与 Windows 的运行实例相关。任何用户账户都可以阅读这些内容,设置、改变或删除它们,只要他们有管理权限。
- 用户
在这个范围内定义的环境变量只针对用户,对每个用户账户来说可能是不同的。这与当前用户有关。用户变量会覆盖具有相同名称的机器范围的变量。
- 进程
此范围内的环境变量是机器和用户范围的组合,此外还有一些由 Windows 操作系统动态创建的变量。
现在你知道了什么是环境变量以及它们如何工作,让我们看看在 Windows 操作系统中哪些变量是可用的。
下面是一个在这个范围内可用的进程变量的列表:
- ALLUSERSPROFILE
- APPDATA
- COMPUTERNAME
- HOMEDRIVE
- HOMEPATH
- LOCALAPPDATA
- LOGONSERVER
- PROMPT
- PUBLIC
- SESSION
- SystemDrive
- SystemRoot
- USERDNSDOMAIN
- USERDOMAIN
- USERDOMAIN_ROAMINGPROFILE
- USERNAME
- USERPROFILE
Windows 环境变量的完整列表
下面是一个完整的环境变量列表,你将在 Windows 操作系统中找到默认的环境变量。
变量名称 | 值 |
---|---|
%ALLUSERSPROFILE% | C:\ProgramData |
%APPDATA% | C:\Users\{username}\AppData\Roaming |
%COMMONPROGRAMFILES% | C:\Program Files\Common Files |
%COMMONPROGRAMFILES(x86)% | C:\Program Files (x86)\Common Files |
%CommonProgramW6432% | C:\Program Files\Common Files |
%COMSPEC% | C:\Windows\System32\cmd.exe |
%HOMEDRIVE% | C:\ |
%HOMEPATH% | C:\Users\{username} |
%LOCALAPPDATA% | C:\Users\{username}\AppData\Local |
%LOGONSERVER% | \\{domain_logon_server} |
%PATH% | C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem |
%PathExt% | .com;.exe;.bat;.cmd;.vbs;.vbe;.js;.jse;.wsf;.wsh;.msc |
%PROGRAMDATA% | C:\ProgramData |
%PROGRAMFILES% | C:\Program Files |
%ProgramW6432% | C:\Program Files |
%PROGRAMFILES(X86)% | C:\Program Files (x86) |
%PROMPT% | $P$G |
%SystemDrive% | C: |
%SystemRoot% | C:\Windows |
%TEMP% | C:\Users\{username}\AppData\Local\Temp |
%TMP% | C:\Users\{username}\AppData\Local\Temp |
%USERDOMAIN% | 与当前用户相关的用户域。 |
%USERDOMAIN_ROAMINGPROFILE% | 与漫游配置文件相关的用户域。 |
%USERNAME% | {username} |
%USERPROFILE% | C:\Users\{username} |
%WINDIR% | C:\Windows |
%PUBLIC% | C:\Users\Public |
%PSModulePath% | %SystemRoot%\system32\WindowsPowerShell\v1.0\Modules\ |
%OneDrive% | C:\Users\{username}\OneDrive |
%DriverData% | C:\Windows\System32\Drivers\DriverData |
%CD% | 输出当前目录路径。(命令提示符) |
%CMDCMDLINE% | 输出用于启动当前命令提示符会话的命令行。(命令提示符) |
%CMDEXTVERSION% | 输出当前命令处理器扩展的数量。(命令提示符) |
%COMPUTERNAME% | 输出系统名称。 |
%DATE% | 输出当前日期。(命令提示符) |
%TIME% | 输出时间。(命令提示符) |
%ERRORLEVEL% | 输出上一条命令的定义退出状态的数字。(命令提示符) |
%PROCESSOR_IDENTIFIER% | 输出处理器标识符。 |
%PROCESSOR_LEVEL% | 输出处理器电平。 |
%PROCESSOR_REVISION% | 输出处理器版本。 |
%NUMBER_OF_PROCESSORS% | 输出物理和虚拟内核的数量。 |
%RANDOM% | 输出从 0 到 32767 的随机数。 |
%OS% | Windows_NT |
环境变量储存在哪里
环境变量存储在 Windows 注册表的两个地方;一个是系统的,一个是个人用户的。
系统环境变量存储在以下位置:
1
|
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
|
用户环境变量存储在以下位置:
1
|
HKEY_CURRENT_USER\Environment
|
你也可以使用 “环境 “键的上下文菜单将环境变量导入另一台 Windows 电脑,反之亦然。
现在你知道了它们的存储位置,你可以看一下它们了。然而,强烈建议你不要使用 Windows 注册表添加或改变环境变量。这是因为任何正在运行的进程都不会看到注册表中的变量变化。进程只看到进程启动时存在的注册表变量和值,除非 Windows 通知它们有变化。
列出 PowerShell 中的环境变量
您还可以使用简单的 cmdlet 在 PowerShell 中列出环境变量。
在提升的 PowerShell 实例中运行以下命令,它将显示计算机上的所有环境变量:
1
|
Get-ChildItem Env: | Sort Name
|
常见问题(FAQ)
- 删除一个环境变量是否安全?
答案既是肯定的,也是否定的。尽管删除一个默认的操作系统环境变量不会对性能产生影响,但任何使用该变量的应用程序或程序将不再能够在指定的目录中寻找可执行文件,或者你将无法在系统的任何地方使用快捷方式来运行可执行文件。
- PATH 环境变量有什么作用?
PATH 环境变量可以为不同的可执行文件存储多个路径值。当一个可执行文件被调用时,比如 “CMD”,PATH 变量告诉它在哪里寻找 cmd.exe 文件。