Qual é a diferença entre os comandos “export -p” e “env”?

2

env exibe uma lista de todas as variáveis de ambiente

$ env |wc -l
63

Total de variáveis de ambiente = 63

De acordo com help export

-p   display a list of all exported variables and functions

$export -p |wc -l 
63

Variáveis de ambiente + linhas de funções = 63 linhas de funções = 0

set disply uma lista de variáveis de ambiente + variáveis de shell + funções

$set |wc -l
4772

Em seguida, para mostrar apenas variáveis (variáveis de ambiente + variáveis de shell)

$(set -o posix ;set)|wc -l
172

Significa linhas de funções = 4772-172 não zero por favor me explique o que está acontecendo?

    
por Sinoosh 17.10.2016 / 15:01

1 resposta

2

A confusão surge do fato de que export -p , por padrão, mostra apenas variáveis exportadas ( declare -x ), não funções .

Para exibir as funções exportadas ( declare -fx ) usando export :

export -fp

Também para esclarecer, contar o número de linhas para obter o número de funções é completamente errado, pois as definições de função abrangem várias linhas (mesmo se definido em uma única linha enquanto declara, set mostra-as em várias linhas).

    
por heemayl 17.10.2016 / 15:28