系统路径与用户路径环境变量的区别...只有当我将路径添加到用户路径中,WinMerge才能正常工作。

35
如果我将C:\Program Files (x86)\WinMerge添加到用户PATH变量中(通过右键单击计算机->高级系统设置->环境变量),一旦我打开一个新的cmd shell,WinmergeU.exe将无法识别。如果我将该路径添加到系统PATH变量中,WinmergeU.exe将被正确识别。我认为除了我在系统上设置后所有用户都可以看到它,而用户PATH是本地的之外,用户和系统之间没有区别。我做错了吗?
以下是添加 C:\Program Files (x86)\WinMerge 到系统 PATH 变量(但未添加到用户变量)的情况,以及添加到用户 PATH 变量(但未添加到系统变量)的情况。在第一种情况下,Winmerge 窗口可以正确启动(未显示),并且您可以通过 echo %PATH% 命令查看路径。在第二种情况下,它无法启动,并且路径不会通过 echo %PATH% 显示。(请注意,在截图之前,我已经清楚地确认了 OK 并关闭了环境变量窗口,并在更改 PATH 并按下 OK 后立即打开了一个新的 cmd)。这个问题可能与我的问题有关(echo %PATH% 是否扩展到只有系统变量还是包括用户变量?),但也可能不是,因此我发布了两个不同的问题。

SYSTEM

USER

3个回答

44

你肯定弄错了什么,或者你的机器存在环境问题。添加一个用户PATH环境变量会导致它被合并到新进程的环境中。

更新:也许这个MSDN环境变量主题的评论是相关的:

发现在Windows Server 2003上,一旦系统PATH超过1920个字符,用户PATH环境变量就不再与它合并以设置进程PATH环境变量,即使完整的系统PATH(即使更大)也将包含在进程PATH变量中。


3
我已经发布了屏幕截图。这对我的电脑有影响。 - Millemila
那么你做错了,或者你的操作系统出了问题。在这里和我使用过的每台机器上都运行良好。也许你的路径太长了,但我不认为这真的是问题所在。 - David Heffernan
6
我并没有做错...我做了三次...在截图之前,我确认了OK并关闭了环境变量窗口,然后立即打开了一个新的cmd窗口,改变了PATH并按下ok键,只为截图重新打开了环境变量窗口。我不知道我还能做什么错误的事情了。Echo %PATH% 只显示系统路径。 - Millemila
2
太棒了!是的,你指出路径太长后,我自己找到了解决办法。删除一些条目就能解决这个问题。真是令人烦恼。谢谢。 - Millemila
我刚刚遇到了用户路径和系统路径的另一个问题...http://stackoverflow.com/questions/29891114/must-i-place-all-dependent-dlls-into-the-jdks-bin-folder 我目睹了一些我无法解释的事情。如果您能过来看看,我会非常感激。 - smwikipedia
显示剩余4条评论

1
在Windows 7上,还要确保系统路径不以反斜杠结尾。如果是这样,用户路径将像往常一样附加到系统路径后面,但是会有一个换行符,这会导致问题。在后一种情况下,简单的命令"path"和"echo %PATH%"将打印出2个不同的输出。

-1

对于16.6版本,我已确认这个问题也是路径长度问题。在cmd提示符下,键入“set”,您可以看到所有的环境变量。用户路径cadence变量和其他变量没有被包括在内。我保存了原始完整路径文本,然后去除了被认为不必要的特定(系统)路径元素。在这之后,在一个新的cmd会话中,键入“set”现在显示用户路径元素附加到系统路径元素的末尾,因为它们现在适合。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接