约 2029 字

约 10 分钟

#环境变量

环境变量是操作系统和进程之间传递配置信息的常见方式。PowerShell 可以通过 $env: 驱动器或 .NET 的 Environment 类读写环境变量。

#使用 $env: 读写

读取环境变量:

> $env:PATH
> $env:HOME

写入环境变量:

> $env:MYVAR = 'hello'
> $env:MYVAR
hello

删除环境变量:

> Remove-Item Env:MYVAR

$env: 的读写只影响当前进程及其子进程,进程结束后不会保留。

#使用 .NET 方法

[Environment] 类提供了更明确的读写方式:

> [Environment]::GetEnvironmentVariable('PATH')
> [Environment]::SetEnvironmentVariable('MYVAR', 'hello', 'Process')
> [Environment]::GetEnvironmentVariable('MYVAR', 'Process')

第三个参数指定目标级别:

> [Environment]::SetEnvironmentVariable('MYVAR', 'hello', 'User')
> [Environment]::SetEnvironmentVariable('MYVAR', 'hello', 'Machine')

#进程级、用户级和系统级

级别作用范围持久性平台
Process当前进程及其子进程进程结束后消失全部平台
User当前用户持久保存Windows
Machine整台计算机持久保存Windows
  • Process 是最常用的级别,适合临时修改。
  • Windows 上 User 和 Machine 会写入用户或系统环境变量。
  • 在 Linux 和 macOS 上,.NET 的环境变量目标通常只支持 Process;持久化环境变量一般通过 shell 配置文件或系统服务配置完成。

#跨平台路径

PATH 环境变量由多个路径组成,Windows 使用分号 ; 分隔,Linux 和 macOS 使用冒号 : 分隔。可以使用 [IO.Path]::PathSeparator 获取当前平台的分隔符:

> [IO.Path]::PathSeparator
> $env:PATH -split [IO.Path]::PathSeparator

向当前进程的 PATH 添加路径:

> $toolPath = Join-Path $HOME 'tools'
> $env:PATH = $toolPath + [IO.Path]::PathSeparator + $env:PATH

#注意事项

  • Windows 的环境变量名不区分大小写,Linux 和 macOS 通常区分大小写。
  • 修改 PATH 前建议先备份原值,避免命令无法找到。
  • 不要在环境变量中存放明文密码等敏感信息。

#推荐阅读

更新: 2026/11/2

作者: planc

创建: 2026/11/2