É 'env' não imprimir o ambiente no shell atual, mas o ambiente recebido dentro de 'env'?

0

manual do coreutils diz sobre o comando env que

env [option]... [name=value]... [command [args]...]

If no command name is specified following the environment specifications, the resulting environment is printed. This is like specifying the printenv program.

é o ambiente impresso em env específico de env , no sentido de que o valor de _ depende de env ? Por exemplo,

$ env | grep '^_'
_=/usr/bin/env

env imprime quase todo o ambiente exportado do shell atual, exceto que o valor da variável de ambiente _ é modificado para ser específico de env ?

Portanto, env não imprime o ambiente no shell atual, mas o ambiente recebeu dentro de env ?

Obrigado.

    
por Tim 01.07.2016 / 15:15

1 resposta

1

env é um programa separado na maioria dos shells, então imprime o ambiente recebido do shell.

O Bourne Shell usa um sistema de gerenciamento de ambiente baseado em variáveis de shell.

Na inicialização, ele importa o ambiente para a lista de variáveis do shell.

Criar ou modificar variáveis do shell não modifica o ambiente que o shell configura para novos programas.

  • chamar set imprime as variáveis internas do shell porque set está embutido no shell

  • chamar env imprime o ambiente exportado porque env é um comando externo

A variável do shell _ foi introduzida por ksh88 . Ele contém o último comando.

    
por 01.07.2016 / 16:31