Quando atualizo meu PATH usando a caixa de diálogo Variáveis de ambiente interna ou algo como o Editor de caminhos e, em seguida, abro um prompt de comando, as alterações no meu PATH não são registradas no console, dependendo de onde o prompt de comando estava. começou em.
Por exemplo, se eu editar o meu PATH e iniciar o cmd.exe no menu Iniciar ou em um atalho na área de trabalho, meu PATH ficará bem: foi atualizado com êxito; no entanto, se eu iniciar o cmd.exe a partir de um atalho em outro lugar que não seja o Menu Iniciar ou a Área de Trabalho, o novo PATH não será lido e, em vez disso, o caminho antigo será exibido. É muito estranho.
Eu tentei executar o prompt de comando a partir de um atalho na área de trabalho e funciona bem; Em seguida, copio exatamente o mesmo atalho para uma subpasta na área de trabalho e recebo o problema do PATH não atualizado.
Sei que isso é muito difícil de explicar, então criei um screencast para mostrar esse problema em ação .
Aqui está uma captura de tela do atalho do prompt de comando, conforme visto no screencast:
Isso está no Windows Vista Home Premium SP2.
fonte
explorer
processo principal detectará alterações de ambiente no Registro (a caixa de diálogo pertencerundll32
) e atualizará seu próprio ambiente automaticamente. (Pelo menos no XP, é o que faz.) É por isso que as alterações são visíveis ao iniciar acmd
partir de um atalho.echo $PATH
não estava funcionando. Eu supus que seria novo, mas não deu certo até fechar todas as guias do Git Bash e ConEmu.Como Rowland sugere, ao iniciar um novo processo, ele lerá as variáveis de ambiente do processo que o está iniciando. Portanto, ao iniciar um prompt de comando no Menu Iniciar ou na área de trabalho , ele lê as variáveis de ambiente a partir das
explorer.exe
quais, como sugere o grawity, detecta alterações nas configurações do ambiente no registro e, portanto, vejo meu novo PATH nos prompt de comando iniciado no Área de trabalho ou Menu Iniciar.A razão de eu não ver as atualizações para o meu caminho no screencast eu postei é porque eu tinha inicialmente lançada uma janela do Explorer usando FARR tornando
FindAndRunRobot.exe
o processo pai. O FARR não detecta automaticamente as mudanças no ambiente e, portanto, os processos filhos gerados a partir dele não capturam o novo PATH. Eu também tinha a opção ' Iniciar janelas da pasta em um processo separado ' definida no Explorer, o que significa que todas as janelas do explorer.exe abri subseqüentemente à inicial aberta pela FARR, onde também são filhos da FARR .Ao desativar a opção ' Iniciar janelas da pasta em um processo separado ', novos
explorer.exe
processos não são criados no FARR, o que resolve o meu problema. No entanto, também inicio janelas de console e outras coisas diretamente da FARR; estes também recebem as configurações antigas do ambiente. Se eu reiniciar o FARR, as novas configurações do ambiente serão propagadas.Aqui está uma captura de tela do Process Explorer mostrando os processos gerados pelo FARR. Nenhum desses processos recebe as novas configurações de ambiente do nível superior, a
explorer.exe
menos que eu reinicie o FARR:fonte