Eu sei como definir variáveis de ambiente específicas do sistema ou do usuário:
Agora, o problema é que a PATH
variável é tratada de forma que o valor digitado para o PATH do usuário seja automaticamente anexado ao PATH do sistema e essa será a variável PATH efetiva.
Ou seja, diga que eu tenho
(SISTEMA) PATH=C:\Windows\System32;C:\Program Files\Foo\bin;...
e (USER) PATH=C:\Program Files\Bar\bin
(observe que não existe %PATH%
neste valor)
a variável de ambiente resultante para esse usuário será:
(eficaz) PATH=C:\Windows\System32;C:\Program Files\Foo\bin;...;C:\Program Files\Bar\bin
No entanto, eu gostaria que, para uma conta de usuário do SO muito específica, a variável de ambiente PATH devesse ter o bar\bin
diretório no início do PATH, em vez de no final.
Existe uma maneira adequada de dizer ao Windows para substituir completamente a PATH
variável de um usuário pelo valor desse usuário, em vez de anexá-lo à PATH
variável do sistema ?
Nota: Obviamente, em um arquivo em lotes, tudo isso não importa, pois você pode definir e ajustar os env.vars como desejar.
PATH
e essa conta de usuário específica seria melhor atendida por ter um diferentePATH
. Sei que existem muitas soluções alternativas, mas estava interessado em saber se há algo pronto para uso / no nível do sistema operacional / registro para conseguir isso.Respostas:
Se você precisar apenas trabalhar para sessões de prompt de comando, crie um arquivo em lote profile / init e configure-o no registro, por /programming/17404165/how-to-run-a-command-on -command-prompt-startup-in-windows . Por exemplo,
Em seguida, basta fazer modificações no PATH nesse arquivo em lotes. Por exemplo,
fonte
Eu tive o mesmo problema e isso funcionou para mim:
Você pode obter "variável de caminho do usuário" através de:
A saída (na minha máquina) é:
Mas então você deve analisar isso e usar a parte relevante.
Eu li a solução aqui aqui e testei na minha máquina.
fonte
Não sei como ignorar variáveis de sistema, mas sei que se você usar variáveis de sessão (via
SET
comando), elas terão precedência sobre outras variáveis. Portanto, você pode usar asSET PATH=C:\Program Files\Bar\bin
instruções e o caminho desejado será a primeira parte da variável.Aqui está uma referência válida e relato aqui um período simples a partir dessa página:
fonte
PATH
variável é uma exceção (caso especial) - a variável usuário não não têm precedência sobre a variável do sistema. O fato de uma "variável de sessão" ter precedência sobre as variáveis predefinidas do usuário e do sistema é verdadeiro, mas como você define uma variável de sessão automaticamente para um usuário? O G-Wiz respondeu a essa pergunta e, AFAICS, você não adicionou nada a essa resposta.