Como atualizar um shell do cmd do Windows depois de modificar minhas variáveis de ambiente?
ou seja, no bash eu posso simplesmente fazer "source ~ / .bashrc"
Como atualizar um shell do cmd do Windows depois de modificar minhas variáveis de ambiente?
ou seja, no bash eu posso simplesmente fazer "source ~ / .bashrc"
Respostas:
Realmente depende de como suas variáveis de ambiente foram definidas. Se, por exemplo, você usou o comando "SET" na linha de comando, isso afeta apenas a instância atual. Por outro lado, comandos como "SETX" ajustam permanentemente o valor da variável de ambiente. O SETX garantirá que todas as instâncias futuras do cmd verão a atualização. Não afetará o ambiente local.
Se a variável de ambiente for definida por outro aplicativo e não estiver sendo atualizada, geralmente é mais fácil reiniciar o processo "explorer.exe", efetuar logoff e logon novamente ou reiniciar. Essencialmente, você só precisa dizer ao explorer para recarregar as variáveis de ambiente. Se for um aplicativo que você desenvolveu, como um instalador, verifique se ele está chamando SendMessage (HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)"Environment");
. Isso diz ao explorer para atualizar seu cache das variáveis de ambiente.
Isso é importante porque aplicativos lançados por outro processo herdam suas variáveis de ambiente de seus pais. Dessa forma, se você iniciar o cmd no explorer, obterá as variáveis conforme o explorer as vê.
Definir e recuperar o ambiente principal no Windows é algo em que o pessoal do BartPE passou bastante tempo.
O ambiente principal é armazenado no registro, mas o shell do explorador lê isso em seu endereço. A partir daqui, ele é enviado para cada sessão do cmd.exe.
SET afeta apenas o ambiente cmd. O SETX permite alterar o ambiente principal, mas a configuração não é refletida no ambiente local.
O CONSET e o 4NT de Frank Westlake podem buscar entradas do registro, mas nenhuma opção para o ambiente principal em particular.
As janelas normalmente carregadas mantêm o controle das configurações do registro, enquanto as carregadas através do minint (ou seja, WinPE) não. Portanto, a configuração do registro e a leitura do registro funcionam em ambos, mas apenas as janelas normalmente inicializadas verão as configurações e as passarão para um novo programa cmd, exe.
isso depende de onde você "define" suas variáveis de ambiente. o equivalente ao seu exemplo do bash seria assim:
arquivo: env.bat
set FOO=bar
e agora você atualiza
% call env.bat
mas eu acho que você fez isso através da janela de configurações do sistema do Windows (ou qualquer que seja o seu nome). O resultado disso é que você realmente mudou o registro. essas configurações do registro são mapeadas para o processo quando você inicia um novo processo.
portanto, você pode iniciar um novo processo (cmd.exe no seu caso) OU pode ler as chaves do Registro que refletem as alterações desejadas. você também pode escrever um pequeno script .bat / .cmd, que obtém o ambiente do registro e altera o ambiente atual de acordo (se o clima parecer positivo, farei isso depois do almoço).
Agora é significativamente mais fácil, não há necessidade de reiniciar o shell:
RefreshEnv.bat
RefreshEnv.bat
Observe que suas variáveis de ambiente recém-adicionadas estão disponíveis em qualquer nova instância do Command / Powershell, verificando a atualização.