Bash: используя точку или "источник", вызывающий другой script - какая разница?

Возьмем небольшой пример:

$ cat source.sh
#!/bin/bash
echo "I'm file source-1"

. source-2.sh

и

$ cat source-2.sh
#!/bin/bash
echo "I'm file source-2"

Теперь запустите:

$ ./source.sh
I'm file source-1
I'm file source-2

Если сначала сменить вызов второго файла:

$ cat source.sh
#!/bin/bash
echo "I'm file source-1"

source source-2.sh

Он будет иметь такое же влияние, как использование dot.

Итак - в чем его отличие? Спасибо.

Ответы

Ответ 1

Нет никакой разницы.

Из manual:

source

source filename

A synonym for . (see Bourne Shell Builtins).

Ответ 2

Единственная разница в переносимости. . - это стандартная команда POSIX для выполнения команд из файла; source - это более читаемый синоним, предоставляемый bash и некоторыми другими оболочками. bash сам, однако, не делает различий между ними.