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
.