Windows 环境变量设置详解:CMD,PowerShell,永久生效

2023-08-10 15:30:22 浏览数 (2)

亲爱的读者,作为一名运维工程师,我一直在 Linux 系统上工作,使用环境变量是我日常工作的一部分。然而,我有时也会在 Windows 系统上工作,在windows环境下设置环境变量的方式有些不同。这篇文章将带你详细了解在 Windows 中设置环境变量的三种方式:CMD,PowerShell,以及如何永久设置环境变量。我希望这篇文章对你有所帮助,无论你是 Windows 用户还是对 Windows 不太熟悉的运维人员。

1. 在 CMD 中设置环境变量

在 CMD(命令提示符)中,我们可以使用 set 命令临时设置环境变量。这种方式仅在当前的 CMD 会话中有效,会话结束时环境变量就会消失。以下是一个例子:

代码语言:javascript复制
set VAR_NAME=value

如果我们想在所有新的 CMD 会话中都能使用这个环境变量,我们可以使用 setx 命令。这个命令会永久保存环境变量,但对当前会话没有影响。例如:

代码语言:javascript复制
setx VAR_NAME value

需要注意的是,setx 设置的环境变量最大长度是 1024 个字符。超过这个长度,命令将不会执行。

2. 在 PowerShell 中设置环境变量

在 PowerShell 中,我们使用 $env: 设置环境变量。这种方式同样仅在当前的 PowerShell 会话中有效,会话结束时环境变量就会消失。以下是一个例子:

代码语言:javascript复制
$env:VAR_NAME="value"

与 CMD 的 set 命令不同,PowerShell 的 $env: 命令同时对当前会话和所有子会话生效。这意味着如果我们在 PowerShell 中启动一个新的程序,这个程序将能够访问你设置的环境变量。

3. 永久设置环境变量

无论是在 CMD 还是 PowerShell 中,临时设置的环境变量都只在当前会话中有效。如果我们需要在所有新的命令行和 PowerShell 会话中都能访问环境变量,你需要永久设置它们。

在 CMD 中,我们可以使用 setx 命令,如前文所述。然而,在 PowerShell 中,我们需要使用 .NETSystem.Environment 类。以下是一个例子:

代码语言:javascript复制
[System.Environment]::SetEnvironmentVariable("VAR_NAME", "value", [System.EnvironmentVariableTarget]::User)

上述命令将 VAR_NAME 设置为用户级别的环境变量。如果我们想设置系统级别的环境变量(对所有用户都有效),我们需要使用 System.EnvironmentVariableTarget]::Machine,并以管理员身份运行 PowerShell。

需要注意的是,使用 setxSystem.Environment 设置的环境变量在当前会话中不会立即生效,我们需要重新启动命令行或 PowerShell 才能看到变化。

总结

设置环境变量是运维工作的重要一环。希望这篇文章能帮助我们理解在 Windows 系统中如何进行这项工作。无论是 CMD,PowerShell,还是永久设置环境变量,我们都可以找到合适的方法。如果你有任何问题或者建议,欢迎在下方留言。祝你工作顺利!

0 人点赞