Quando invocados sem argumentos, os comandos env
e printenv
do GNU Coreutils imprimem o valor de cada variável de ambiente. O que determina a ordem em que essas variáveis são impressas? Não é a ordem alfabética, nem a ordem em que as variáveis foram definidas.
Responder1
Cada processo possui uma lista de strings que mantém como seu ambiente. Quando você adiciona, modifica ou exclui itens desta lista, a biblioteca de tempo de execução precisa atualizar a matriz correspondente. Como não há nenhum requisito padrão para manter isso na forma classificada, o tempo de execução usa o que os desenvolvedores decidiram ser a maneira mais rápida de atualizar a lista. Considerações de desempenho são o quedeterminara ordem.
Para obter mais informações, é claro, ocódigo fonte deenv
está disponível para inspeção. Ele imprime o ambiente na ordem que o array environ
usa.