What really IS the difference between the source and dot commands in Bash/ZShell anyways?



Source в большинстве систем — это просто более читабельный псевдоним для команды dot (.). Поскольку в стандартах IEEE POSIX указано, что команда dot является единственным способом исходного ввода команд в файл оболочки, использование команды dot является наиболее безопасным вариантом, если речь идет о переносимости. Команды source и dot выполняют скрипт в том же процессе, что и оболочка, в которой он выполняется, в то время как команда ./ выполняет скрипт в другом процессе, то есть для запуска процесса используется новая оболочка, которая после завершения закрывается. Единственное различие между поведением source и dot заключается в том, что при использовании команды dot вы должны указать полный путь к файлу, который хотите выполнить (или иметь этот путь в переменной PATH), в то время как source не обременен этим ограничением. Читать дальше.