export
экспортирует в дочерние элементы текущего процесса, по умолчанию они не экспортируются. Например:
$ foo=bar
$ echo "$foo"
bar
$ bash -c 'echo "$foo"'
$ export foo
$ bash -c 'echo "$foo"'
bar
set
с другой стороны, устанавливает атрибуты оболочки, например, позиционные параметры.
$ set foo=baz
$ echo "$1"
foo=baz
Обратите внимание, что baz
это не присваивается foo
, оно просто становится буквальным позиционным параметром. Есть много других вещей, которые set
можно сделать (в основном опции оболочки), смотрите help set
.
Что касается печати, то export
без вызова аргументов печатаются все переменные в среде оболочки. set
также печатает переменные, которые не экспортируются. Он также может экспортировать некоторые другие объекты (хотя вы должны заметить, что это не переносимо), смотрите help export
.