When the script is done, any changes that it made to the environment are discarded. . script The above sources the script. It is as if the commands had been typed in directly. Any environment changes are kept. source script This also sources the script. The source command is not required by POSIX and therefore is less portable than the shorter ..
source is a shell keyword that is supposed to be used like this: source file where file contains valid shell commands. These shell commands will be executed in the current shell as if typed from the command line.
Source vs . why different behaviour? - Unix & Linux Stack Exchange
You have an alias which is overriding the builtin source (fix with unalias source) You have a function which is overriding source (fix with unset -f source) You are somehow not using bash (although your bang line would suggest you are). source is not POSIX. Using source on dash does not work, only . works.
bash script error: source: not found - Unix & Linux Stack Exchange
I've read that BASH_SOURCE should be populated with the name of the executing script (and it works!). But why does BASH_SOURCE hold the name of the executing script, when it is defined in man bash as an array of source filenames corresponding to shell functions?
Why can BASH_SOURCE be used to obtain the current directory of the ...
That being said... +1 bump for asking a common question that should be answered for all newcomers to *nix systems. :) Building from source sometimes means the difference between fixing a nasty bug and just suffering until the next software release. It's really not that bad, and as many here have pointed out, once you know what to look for and how to do it, fairly painless.