Como posso atualizar as variáveis de ambiente do shell cygwin definidas na janela Propriedades do sistema

6

Suponha que eu vá para a janela System Properties e adicione uma variável de ambiente ao Path. Se eu tiver uma janela de terminal aberta, ela não saberá da alteração, então eu a fecho e abro outra.

Existe uma maneira de recarregar as informações do caminho a partir da linha de comando? Eu particularmente gostaria de saber como posso fazê-lo com meu shell Cygwin, mas ficaria feliz em saber como lidar com cada caso (Cygwin ou terminal nativo).

    
por Eric Wilson 20.07.2011 / 20:02

2 respostas

4

Não há um método interno para que as alterações sejam propagadas automaticamente para processos filhos, os processos podem ser configurados para escutar uma mensagem específica e atualizar, mas para isso é necessário um tratamento especial no aplicativo.

A propagação do ambiente para algumas aplicações é a exceção e não a regra. O comportamento normal é que, quando o processo é criado, ele obtém uma cópia do ambiente do processo pai. Mudanças com o ambiente dentro desse processo não se propagam de volta ao pai. Depois que um processo tiver sido criado, quaisquer outras alterações no ambiente do pai não serão propagadas para o filho.

No Windows, o ambiente em que as variáveis do sistema que você define através dessa interface são armazenadas no registro , para que você possa, teoricamente, escreva um script no cygwin que releria o registro e mostraria as variáveis atuais e, em seguida, usaria isso para atualizar o ambiente no shell atual.

Do link

However, note that modifications to the environment variables do not result in immediate change. For example, if you start another Command Prompt after making the changes, the environment variables will reflect the previous (not the current) values. The changes do not take effect until you log off and then log back on.

To effect these changes without having to log off, broadcast a WM_SETTINGCHANGE message to all windows in the system, so that any interested applications (such as Windows Explorer, Program Manager, Task Manager, Control Panel, and so forth) can perform an update.

    
por 20.07.2011 / 21:28
1

Bem, em um console do Windows, basta digitar cmd e apertar enter. Isso tecnicamente coloca você em uma nova sessão dentro de sua outra sessão, mas terá as novas variáveis env. O que não terá são informações da sessão da sessão externa. Então, qualquer variável env ou histórico de comandos, esse tipo de coisa.

    
por 20.07.2011 / 20:24