Не могу понять, чем объясняется разница в выводе команд set, env, export и declare (typeset). Вроде все они должны выводить перечень переменных среды (и функций), но вывод этих команд существенно отличается. Может кто-нибудь толково объяснить, в чем их разница. В man-ах копался, но не понял.