Вони еквівалентні в баші тим, що роблять абсолютно те саме. З іншого боку, source
на 5 символів довше і не переноситься на оболонки POSIX або Bourne, тоді як .
(крапка), тому я ніколи не заважаю користуватися source
.
Це правильно - джерело файлу виконує команди в поточній оболонці, і це вплине на ваше поточне середовище оболонки. Ви все одно можете передавати аргументи до джерела, і bash насправді шукатиме $PATH
ім'я файлу так само, як і звичайна команда, якщо вона не містить косої риски.
Не пов’язано з початковим запитанням щодо .
vs source
, але у вашому прикладі,
. ./myScript.sh
не тотожне
source myScript.sh
адже поки .
і source
функціонально однакові, myScript.sh
і ./myScript.sh
не є однаковими. Оскільки ./myScript.sh
містить косу рису, вона інтерпретується як шлях, а оболонка просто використовує ./myScript.sh
. Однак myScript.sh
не має нахилу, і оболонка $PATH
спочатку шукає її. Це стандартна поведінка для визначеного POSIX.
. Більшість оболонок за замовчуванням до цього, хоча вони можуть додавати розширення (наприклад, пошук у поточному робочому каталозі після пошуку шляху) або параметри зміни поведінки .
/ source
.