Estou um pouco perdido quanto ao propósito de set
e export
no Bash (e acho que provavelmente outras conchas também).
Eu acho que é para definir variáveis de ambiente, mas isso pode ser feito apenas com VARIABLE=VALUE
, certo?
Também a digitação set
e export
por conta própria mostra valores diferentes.
Então, qual é o seu propósito?
Respostas:
export
exporta para filhos do processo atual; por padrão, eles não são exportados. Por exemplo:set
, por outro lado, define os atributos do shell, por exemplo, os parâmetros posicionais.Observe que
baz
não está atribuído afoo
, ele simplesmente se torna um parâmetro posicional literal. Existem muitas outras coisas queset
podem ser feitas (principalmente opções de shell), vejahelp set
.Quanto à impressão,
export
chamada sem argumentos imprime todas as variáveis no ambiente do shell.set
também imprime variáveis que não são exportadas. Também pode exportar alguns outros objetos (embora você deva observar que isso não é portátil), consultehelp export
.fonte
foo=bar command
. Esta é uma exportação implícita para um único comando. A segunda possibilidade é quehttp_proxy
já foi exportada para o seu ambiente antes de você modificá-lo.Veja
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.fonte