Они эквивалентны в Bash в том, что они делают то же самое. С другой стороны, sourceон на 5 символов длиннее и не переносится на оболочки только для POSIX или Bourne, тогда как .(точка) есть, поэтому я никогда не буду использовать его source.
Это правильно - получение файла запускает команды в текущей оболочке, и это повлияет на текущую среду оболочки. Вы по-прежнему можете передавать аргументы в исходный файл, и bash фактически будет искать $PATHимя файла, как обычная команда, если она не содержит косых черт.
Не связано с первоначальным вопросом .против source, но в вашем примере,
. ./myScript.sh
не идентичен
source myScript.sh
потому что пока .и sourceфункционально идентичны, myScript.shа ./myScript.shне одинаковы. Поскольку ./myScript.shсодержит косую черту, он интерпретируется как путь, а оболочка просто использует ./myScript.sh. Однако myScript.shкосой черты нет, поэтому оболочка сначала выполняет $PATHпоиск. Это стандартное поведение, определенное POSIX для .. Большинство оболочек используют это по умолчанию, хотя они могут добавлять расширения (например, поиск в текущем рабочем каталоге после поиска пути) или опции, чтобы изменить поведение ./ source.