O que fazem os bash-builtins 'set' e 'export'?

40

Eu estou com uma pequena perda quanto ao propósito de set e export no Bash (e eu acho que provavelmente outros shells também).

Eu acho que é para configurar variáveis de ambiente, mas isso pode ser feito apenas com VARIABLE=VALUE , certo?

Também digite set e export em seus próprios valores diferentes.

Então qual é o propósito deles?

    
por mydoghasworms 04.04.2013 / 11:39

2 respostas

42

export exporta para filhos do processo atual, por padrão eles não são exportados. Por exemplo:

$ foo=bar
$ echo "$foo"
bar
$ bash -c 'echo "$foo"'

$ export foo
$ bash -c 'echo "$foo"'
bar

set , por outro lado, define atributos de shell, por exemplo, os parâmetros posicionais.

$ set foo=baz
$ echo "$1"
foo=baz

Observe que baz não está atribuído a foo , ele simplesmente se torna um parâmetro posicional literal. Há muitas outras coisas que o set pode fazer (principalmente opções de shell), veja help set .

Quanto à impressão, export chamado sem argumentos imprime todas as variáveis no ambiente do shell. set também imprime variáveis que não são exportadas. Ele também pode exportar alguns outros objetos (embora você deva observar que isso não é portátil), consulte help export .

    
por 04.04.2013 / 11:45
6

Ver help set : set é usado para definir atributos de shell e atributos posicionais.

Variáveis que não são exportadas não são herdadas por processos filhos. export é usado para marcar uma variável para exportação.

    
por 04.04.2013 / 11:45

Tags