跳转到内容
关系图谱

Windows 环境变量设置

850 字 3 分钟

属性 2
author
wwvo
status
Active

Windows 环境变量设置

本文档介绍在 Windows 中查看、设置、取消环境变量的常用方法,适合开发环境配置(如 Java、Node.js、Rust、Go 等)。

Tip

如果你主要用于 Rust,可结合 Windows Rust 安装配置 一起使用。 Scoop 包管理器的代理与环境变量配置请参阅 Scoop

1. 环境变量是什么

环境变量是操作系统提供给程序的键值配置,例如:

  • PATH:命令搜索路径
  • JAVA_HOME:JDK 安装目录
  • RUSTUP_DIST_SERVER:rustup 下载源

程序启动时会读取环境变量,从而影响运行行为。

2. 作用域说明(非常重要)

Windows 环境变量常见有三种作用域:

作用域生效范围持久化说明
当前会话(Process)当前终端窗口关闭窗口后失效
用户级(User)当前用户仅对当前用户生效
系统级(Machine)所有用户通常需要管理员权限

3. 图形界面设置方法

  1. 打开:系统属性高级环境变量
  2. 上半部分是“用户变量”,下半部分是“系统变量”
  3. 执行:新建 / 编辑 / 删除
  4. 修改后建议重开终端或重启相关软件

4. PowerShell 命令行设置方法

4.1 仅当前终端生效(临时)

powershell
# 设置
$env:DEMO_VAR = "hello"

# 查看
echo $env:DEMO_VAR

# 删除当前会话变量
Remove-Item Env:DEMO_VAR -ErrorAction SilentlyContinue

4.2 持久化设置(推荐)

powershell
# 设置用户级变量(当前用户)
setx DEMO_VAR "hello"

# 设置系统级变量(所有用户,需管理员权限)
setx DEMO_VAR "hello" /M
Note

setx 设置后不会立即影响当前窗口,需要重新打开终端。

4.3 使用 .NET API 精确设置(高级)

powershell
# 设置用户级变量
[Environment]::SetEnvironmentVariable("DEMO_VAR", "hello", "User")

# 设置系统级变量
[Environment]::SetEnvironmentVariable("DEMO_VAR", "hello", "Machine")

# 删除变量(取消设置)
[Environment]::SetEnvironmentVariable("DEMO_VAR", $null, "User")
[Environment]::SetEnvironmentVariable("DEMO_VAR", $null, "Machine")

5. 查看环境变量

powershell
# 查看当前会话变量
echo $env:DEMO_VAR

# 查看持久化用户级变量
[Environment]::GetEnvironmentVariable("DEMO_VAR", "User")

# 查看持久化系统级变量
[Environment]::GetEnvironmentVariable("DEMO_VAR", "Machine")

6. PATH 的正确修改方式

PATH 是最常修改的变量,建议避免直接覆盖,采用“追加”方式。

powershell
# 追加到用户 PATH
$old = [Environment]::GetEnvironmentVariable("Path", "User")
$new = "$old;C:\tools\bin"
[Environment]::SetEnvironmentVariable("Path", $new, "User")
Warning

不要误删原有 PATH 内容;路径之间使用分号 ; 分隔。修改后请重开终端再验证。

7. 常见问题

7.1 为什么设置了变量却不生效?

  • 你可能用了 setx,但还在旧终端里验证
  • 解决:重开终端/IDE 后再检查

7.2 用户级和系统级同名变量冲突怎么办?

  • 进程通常看到合并后的结果
  • 建议统一管理,避免同名重复定义

7.3 如何完全取消某个变量?

  • 同时删除 User 和 Machine 作用域
  • 关闭并重新打开终端

8. 实战示例

配置 Rust 镜像变量

powershell
# 设置(用户级)
[Environment]::SetEnvironmentVariable("RUSTUP_DIST_SERVER", "https://mirrors.tuna.tsinghua.edu.cn/rustup", "User")
[Environment]::SetEnvironmentVariable("RUSTUP_UPDATE_ROOT", "https://mirrors.tuna.tsinghua.edu.cn/rustup/rustup", "User")

# 删除(用户级)
[Environment]::SetEnvironmentVariable("RUSTUP_DIST_SERVER", $null, "User")
[Environment]::SetEnvironmentVariable("RUSTUP_UPDATE_ROOT", $null, "User")

配置 Claude Code 环境变量

powershell
[Environment]::SetEnvironmentVariable("ANTHROPIC_BASE_URL", "http://43.153.107.95:8317", "Machine")
[Environment]::SetEnvironmentVariable("ANTHROPIC_AUTH_TOKEN", "sk-uG0JQ1XSXq4s0i9r3", "Machine")
[Environment]::SetEnvironmentVariable("ANTHROPIC_DEFAULT_OPUS_MODEL", "gpt-5.3-codex(high)", "Machine")
[Environment]::SetEnvironmentVariable("ANTHROPIC_DEFAULT_SONNET_MODEL", "gpt-5.3-codex(medium)", "Machine")
[Environment]::SetEnvironmentVariable("ANTHROPIC_DEFAULT_HAIKU_MODEL", "gpt-5.3-codex(low)", "Machine")
[Environment]::SetEnvironmentVariable("ANTHROPIC_MODEL", "gpt-5.3-codex", "Machine")
[Environment]::SetEnvironmentVariable("ANTHROPIC_SMALL_FAST_MODEL", "gpt-5.3-codex(low)", "Machine")


# 删除系统级环境变量(需要以管理员身份运行 PowerShell)
[Environment]::SetEnvironmentVariable("ANTHROPIC_BASE_URL", $null, "Machine")
[Environment]::SetEnvironmentVariable("ANTHROPIC_AUTH_TOKEN", $null, "Machine")
[Environment]::SetEnvironmentVariable("ANTHROPIC_DEFAULT_OPUS_MODEL", $null, "Machine")
[Environment]::SetEnvironmentVariable("ANTHROPIC_DEFAULT_SONNET_MODEL", $null, "Machine")
[Environment]::SetEnvironmentVariable("ANTHROPIC_DEFAULT_HAIKU_MODEL", $null, "Machine")
[Environment]::SetEnvironmentVariable("ANTHROPIC_MODEL", $null, "Machine")
[Environment]::SetEnvironmentVariable("ANTHROPIC_SMALL_FAST_MODEL", $null, "Machine")

9. 建议

  • 开发机优先使用“用户级”变量,避免影响系统全局
  • 团队内统一环境变量命名规范
  • 重要配置(代理、SDK 路径)写入项目文档