Como o bash modifica variáveis ambientais on-the-fly?

3

Como sabemos, só é possível alterar o conjunto de variáveis ambientais de um processo em algum tempo após a chamada do sistema fork() e antes de exec() , por exemplo. manipulação como essa é possível somente de pai para filho através da API apropriada.

No entanto, quando usamos bash e é export built-in, o bash de alguma forma altera as variáveis ambientais do processo atual (instância do shell).

Como isso é feito? Usa algum truque desagradável?

    
por programings 31.12.2015 / 20:45

1 resposta

3

bash está simplesmente atualizando suas variáveis na memória. Apesar do nome, uma variável de ambiente é simplesmente uma variável shell cujo valor é copiado para o ambiente de qualquer processo filho. Quando uma instância de shell é iniciada, as seqüências de caracteres de ambiente cujo "nome" (a parte antes do primeiro = ) são identificadores de shell válidos são usadas para criar variáveis de shell cujo atributo de exportação está definido. Quando um novo processo é iniciado, qualquer variável do shell com seu conjunto de atributos de exportação (seja do ambiente ou definido posteriormente) é incluída no ambiente desse processo.

    
por 31.12.2015 / 21:00