为什么"Path" Windows的环境变量和命令行不一样?

Why are "Path" Windows's environment variable and the command line different?

在我的电脑上,运行 Windows XP 5.1.2600,遵循

"My Computer" > "Properties" > "Advanced" > "Environment Variables" > "Path"

我得到一个字符串,但是在一个批处理文件中,或者通过

直接从提示中输入

回显%路径%

我换了一个。

谁能解释一下它们的不同之处以及如何解决问题,将 "DOS-path" 设置为与 "Windows-PATH" 相同的值?

可能您看到的不同之处在于,当创建新进程时,其默认环境包含一个 PATH 变量,该变量是通过将系统变量与用户变量合并而成的。

至于如何"fix the issue",没有什么可以解决的。系统按设计运行。

您在命令行上看到的 PATH 环境变量的值(与 "DOS" 顺便说一句无关)是系统范围 PATH 变量和用户特定 PATH 变量。

如果您从控制面板中打开带有系统变量的对话框,则上半部分包含用户特定的环境变量。下半部分包含系统变量。

如果您为您的用户设置 PATH 变量,例如c:\foo,系统路径是 c:\Windows\System32 那么当你在命令行上执行 ECHO %PATH% 时你会看到 c:\Windows\System32;c:\foo

两件事:

  1. 正如其他人所提到的,PATH 的完整值是用户的 PATH 变量和系统的 PATH 变量的组合。

  2. 如果您更改环境变量(包括 PATH),任何已经 运行 的进程(包括命令提示符)将继续使用旧的环境变量值。您将需要重新启动这些进程以获取您所做的任何更改。

我遇到了同样的问题,我通过

获得的系统变量

"My Computer" > "Properties" > "Advanced" > "Environment Variables" > "Path"

与通过

通过命令行界面显示的不同

ECHO %PATH%

对此的修复基本上是等待更改发生,并且可以通过重新启动 cmd 和资源管理器来加快速度。为此,您可以简单地结束 Explorer 和 CMD 的任务,然后开始一个新任务或直接重新启动它。

CMD也一样。

Windows 注册表可以保存未显示在您通过控制面板看到的 PATH 环境变量版本中的路径条目。 (为什么,我不知道)。

差异意味着某些东西(可能是安装脚本)对注册表进行了更改。

要查看或更改本地用户的路径变量,请查看 HKEY_CURRENT_USER\Environment 键。

要查看系统路径,请查看HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment