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.