Quando e como essas variáveis de ambiente padrão foram criadas e exportadas?

1

O seguinte mostra a variável de ambiente padrão em um shell bash sem executar nenhum arquivo de inicialização?

$ env -i bash --noprofile --norc
$ export
declare -x OLDPWD
declare -x PWD="/home/t"
declare -x SHLVL="1"

(Observe que set fornecerá uma lista muito maior de variáveis de shell padrão que podem ou não ser do ambiente).

Quando e como as três variáveis de ambiente foram criadas e exportadas?

Quem os criou, bash ou alguns arquivos de inicialização implícitos que eu não excluí quando iniciei o bash?

Minha pergunta é inspirada por Quais são as variáveis de ambiente por padrão?

Obrigado.

    
por Tim 22.04.2018 / 02:46

1 resposta

4

Quando estou curioso sobre o que um programa de código aberto está fazendo, analisarei o código-fonte (e a documentação e a experimentação). Parece que você encontrou uma lista muito boa, com base na pesquisa de set_auto_export ( em bash código-fonte para variáveis.c

Estes estão dentro de initialize_shell_variables() , que é chamado de shell_initialize() em shell.c, que em si é chamado de main() em shell.c.

Você pode até encontrar evidência de $PATH e $TERM sendo marcado para exportação em um determinado momento, mas agora ifdef'd out.

    
por 22.04.2018 / 04:44