Preciso entender como as variáveis Global x Usuário funcionam no Windows.
Caso 1: se a mesma variável é definida na seção global e do usuário , qual é o comportamento? Por exemplo, eu defini uma variável% PATH% nas seções global e do usuário e vejo apenas valor global ; existe uma maneira de 'anexar " o PATH do usuário ao PATH global ?
Caso 2:
As variáveis definidas na seção do usuário não são 'resolvidas' na seção global . Se eu usar o SET
comando, vejo uma lista de todas as variáveis definidas ( usuário e global ), mas as 'referências cruzadas' não são resolvidas.
Por exemplo
na seção do usuário eu defino:
VAR1=test-user
na seção global eu defino:
VAR2=%VAR1%-more;%VAR3%-more
VAR3=test-global
com SET
eu vejo:
...
VAR1=test-user
VAR2=%VAR1%-more;test-global-more
VAR3=test-global
...
Estou em uma caixa x64 do Windows 7.
Portanto, com base nos testes acima, minhas conclusões são:
- variáveis globais substituem variáveis de usuário (se o nome for o mesmo, somente global é válido)
- nenhuma referência cruzada é admitida entre usuário e variáveis globais
Estou certo?
fonte
Respostas:
Suas conclusões não estão certas, pelo menos de acordo com meus testes.
As variáveis do usuário podem fazer referência às do sistema (global).
Variáveis do sistema não podem fazer referência a variáveis do usuário.
As variáveis do usuário substituirão as do sistema (globais).
Apenas no conjunto padrão,
TEMP
(eTMP
) são definidos como a variável do usuário%USERPROFILE%\AppData\Local\Temp
e ao mesmo tempo que a variável do sistema comoC:\Windows\TEMP
.PATH
parece ser um caso especial, em que a variável do usuárioPATH
(se definida) é sempre anexada à variável do sistema em vez de substituí-la.fonte
PATH
(oupath
) com o valorC:\test
, salve (pressioneOK
), abra um novo prompt de comando e digiteecho %path%
:C:\test
aparece no final.USER_PATH
não tem um significado especial para mim. Seu sistema pode ser diferente do meu por qualquer motivo ... Alguém poderia tentar e confirmar de uma maneira ou de outra?