Using dot or "source" while calling another script - what is the difference?
BashDot SourceBash Problem Overview
Let's take a little example:
$ cat source.sh
#!/bin/bash
echo "I'm file source-1"
. source-2.sh
And:
$ cat source-2.sh
#!/bin/bash
echo "I'm file source-2"
Now run:
$ ./source.sh
I'm file source-1
I'm file source-2
If I'll change the call of the second file in first:
$ cat source.sh
#!/bin/bash
echo "I'm file source-1"
source source-2.sh
It will have the same effect as using dot
.
What is difference between these methods?
Bash Solutions
Solution 1 - Bash
The only difference is in portability.
.
is the POSIX-standard command for executing commands from a file; source
is a more-readable synonym provided by Bash and some other shells. Bash itself, however, makes no distinction between the two.
Solution 2 - Bash
There is no difference.
From the manual:
> source
>
> lang-none > source filename > > A synonym for . (see Bourne Shell Builtins). >