Они эквивалентны в 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
.