#环境变量
环境变量是操作系统和进程之间传递配置信息的常见方式。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前建议先备份原值,避免命令无法找到。 - 不要在环境变量中存放明文密码等敏感信息。