如果我将C:\Program Files (x86)\WinMerge
添加到用户PATH
变量(通过右键单击计算机 - >高级系统设置 - >环境变量),一旦我打开一个新的cmd shell,WinmergeU.exe就是未识别。如果我将该路径添加到System PATH
变量,则会正确识别WinmergeU.exe。我虽然用户和系统之间没有区别,但是如果我在系统上设置它,所有用户都会看到它,而用户PATH
是本地的。难道我做错了什么?
编辑1:
在下面您可以看到首先将C:\Program Files (x86)\WinMerge
添加到系统PATH
变量(但不添加到用户)的情况,然后将其添加到用户{{1}变量(但不是系统)。在第一种情况下,Winmerge窗口正确启动(未显示),您可以看到路径由echo%PATH%命令显示。在第二种情况下,它不会启动,并且回路%PATH%不显示路径。 (注意我在确认之前已经清楚地确认并在拍摄这些截图之前关闭了环境变量窗口,并且在更改PATH并按下确定之后我立即打开了一个新的cmd)。这个问题可能与我的问题有关(Does echo %PATH% expand to only the system or also the user variables?),但由于可能不是我发布了两个不同的问题。
答案 0 :(得分:42)
您必须弄错,或者机器出现环境问题。添加用户PATH
环境变量会导致它合并到新进程的环境中。
更新:也许这个comment from the MSDN topic on environment variables可能是相关的:
在Windows Server 2003上发现,一旦系统PATH传递1920个字符,用户PATH环境变量就不再与它合并以设置进程PATH环境变量,即使完整系统PATH(即使更大)将被包含在进程PATH变量中。
答案 1 :(得分:0)
On Windows 7, also make sure that the system path does not end with a backslash. If it does, the USER PATH is appended to the system path as per usual, but after a line break, which breaks things. In the latter case, the simple command "path" and "echo %PATH% " will print 2 different outputs.
答案 2 :(得分:-1)
对于16.6,我已经确认此问题也是一个路径长度问题。在cmd提示符下键入“set”,您可以看到所有的env。变量。不包括用户路径节奏变量和其他变量。我保存了原始的完整路径文本,然后我经历并修剪了被认为不必要的特定(系统)路径元素。在此之后,在新的cmd会话中,键入“set”现在会将用户路径元素显示在系统路径元素的末尾,因为它们现在适合。