Variáveis de ambiente. Onde eles estão salvos? [duplicado]

4

Se eu não editar o arquivo .bashrc ou outros arquivos de configuração, as variáveis de ambiente que eu configurei desaparecerão quando eu sair ou desligar o terminal.

O que eu estou curioso é, onde estão aqueles env 'temporários' env vars salvos em?

Como eu acho, eles podem estar na memória. Isso faz sentido porque eles vão desaparecer quando o terminal é desligado (igual ao terminal que eu estava usando se foi da memória). Estou correcto?

    
por March3April4 16.04.2015 / 14:05

3 respostas

6

As variáveis de ambiente são armazenadas na memória associada a um processo.

Todo processo tem acesso ao seu próprio conjunto de variáveis de ambiente. Um processo filho (um iniciado pelo processo "atual") herda uma cópia dessas variáveis. Não é possível para nenhum processo alterar as variáveis de ambiente de qualquer outro processo.

Usando um shell como bash , você pode definir variáveis de ambiente ao efetuar login ou iniciar um novo processo bash . O shell em si também define várias variáveis de ambiente ( PWD vem à mente depois de receber comentários) e outras variáveis de ambiente, como PATH , são usadas em um nível muito mais profundo que apenas o shell - neste exemplo pelas bibliotecas do sistema.

    
por 16.04.2015 / 14:12
1

Sim e não (mais sim do que não, no entanto). Eles estão na memória do seu shell, então não apenas eles desaparecem quando o seu shell atual sai, eles não estarão lá se você abrir um novo shell em qualquer lugar que não seja o seu shell atual.

    
por 16.04.2015 / 14:11
0

Estritamente falando, as variáveis de ambiente não são "salvas", pois tendemos a pensar em salvar. Eles existem na memória de um processo. Eles são criados quando um processo é iniciado (possivelmente como uma cópia das variáveis de ambiente do processo de chamada)

No Linux, você pode obtê-los como um "arquivo" de tipos, se você souber o PID do processo para o qual deseja as variáveis de ambiente. Eles estão em /proc/<pid>/environ .

No bash, você pode obter seu PID da variável de ambiente $ , portanto, o arquivo que você deseja é /proc/$$/environ . Eles são armazenados como pares nome = valor, com um caractere nulo entre eles. Este não é realmente um arquivo (e você não pode escrever nele), mas você pode acessá-lo como se fosse um arquivo, porque às vezes é conveniente fazer isso.

    
por 16.04.2015 / 15:59