Using dot or "source" while calling another script - what is the difference?

BashDot Source

Bash 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). >

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionsetevoyView Question on Stackoverflow
Solution 1 - BashchepnerView Answer on Stackoverflow
Solution 2 - BashdevnullView Answer on Stackoverflow