就我理解,不存在先后区别。
因为系统变量和用户变量完全不是一回事情,因此某个用户登录他的账户,并且启用了用户变量,那么它会先检查用户变量,如果没有检查到就检查系统变量,都没有则报错。
如果按照这样的理解,反而说明,在使用环境变量的时候,用户变量和系统变量在优先级上确实有区别。
就拿我举的例子:
系统变量CLASSPATH = C:\abc;C:\cde
用户变量CLASSPATH = C:\aaa;C:\bbb
系统会先检查用户变量,发现变量名有定义,则取值 C:\aaa;C:\bbb,而不会再去检查系统变量是否存在,且值为多少。如果用户变量没有定义,再去找系统变量。很明显,用户变量优先于系统变量。
而在XP的环境下,相同的变量名,用户变量会套用在系统变量之上。
同样是上面这个例子,做 echo %CLASSPATH% 时,得到结果是:C:\abc;C:\cde;C:\aaa;C:\bbb
我不确定XP和Windows7在环境变量上的规则是否发生了变化。
如果确实如你所述,那么,用户变量要优先于系统变量,而不去考量系统变量值。(在两者都存在变量名的情况下)