
Posso definir variáveis de ambiente para serem herdadas por todos os processos no ~/.profile
. Isso funciona porque o ambiente de desktop (por exemplo, gnome-shell) executa este arquivo no login. O gnome-shell então atualiza suas próprias variáveis de ambiente. Como cada processo (firefox, xterm, emacs) tem o gnome-shell como ancestral, eles herdam essas variáveis de ambiente.
Existe uma maneira de atualizar as variáveis de ambiente neste processo (gnome-shell) após o login? Eu imagino algo como
$ xdg-set FOO=BAR
então, em um novo terminal, você poderá ver imediatamente
$ echo $FOO
BAR
Responder1
O ambiente é passado para um novo processo de maneira semelhante aos argumentos da linha de comando: eles são copiados para o espaço de endereço do novo processo. Eles não são passados "por referência", portanto, uma mudança no ambiente de algum processo ancestral não é refletida nos processos descendentes.
Isto significa que você só pode alterar o ambiente de um processo manipulando o próprio processo, e somente se o processo oferecer um meio para fazer isso, por exemplo, definindo uma variável em um shell. Essa mudança no ambiente normalmente se reflete em quaisquer processos filhos que o processo possa gerar.