Oh, dot
the primary use of source command is to refresh environment variables.
source filename [options]
You can also use . (dot) instead of source command like this:
. filename [options]
Source vs Bash
If you’ve been around Linux for a little while, you may have encountered these commands and thought they did the same thing. After all, both commands can be used to execute a script.
Source works in the current shell, unlike running bash which creates a new shell. This isn’t obvious since no new windows are displayed.
If you’re following along, this one will require you to write a very simple script (let’s call it echo.sh) that looks like this:
#! bin/bash
echo $USER
echo $name
Before you do anything else in your terminal, assign your name to the variable name.
christopher@linuxhandbook:~$ name=chris
Next, I am going to show you what happens when you try all 3 commands in the same terminal that you assigned your variable in.
christopher@linuxhandbook:~$ bash echo.sh
christopher
christopher@linuxhandbook:~$ source echo.sh
christopher
chris
christopher@linuxhandbook:~$ . echo.sh
christopher
chris
As you can see, your local variable was not recognized when you executed your script via bash.
Refresh environment variables with source command
Source can also be used to update environmental variables in the current shell. A common application for this task is updating your bash profile in the current shell.
A user may want to modify their bash profile to, say, create an alias. Normally, once you save the configuration you will need to open a new terminal window for the changes to take place.
christopher@linuxhandbook:~$ source .bashrc
Running this will refresh the settings in your current shell without forcing you to open a new terminal.