2013-11-20 4 views
17

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

$ 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 

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

Итак - в чем разница, это эти методы? Благодарю.

ответ

18

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

От manual:

source

source filename 

A synonym for . (see Bourne Shell Builtins). 
19

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

Смежные вопросы