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 os atributos do 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. Existem muitas outras coisas que set
podem ser feitas (principalmente opções de shell), veja help 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), consulte help export
.