1 March 2021
2 mins read

Source Command in Linux

The source command is a built-in shell command used to read and execute commands from a file inside the current shell session. The source command is commonly used to retain/change the environment variable in the current shell. In short, sourcing a script will run execute commands in the current shell.

The source command is useful for:

  • Refreshing your current shell environment
  • To execute a shell script in the context of the current environment
  • To import a shell function in your script
  • Read variables from a shell script

Syntax for source command

The syntax for this builtin shell command is human readable. It takes a file and if arguments are provided they serve as positional parameters for the script being passed.

source FILENAME [ARGUMENTS]

The . (dot) can also be used as an alternative for source command.

. FILENAME [ARGUMENTS]

How to use source command

Here I explain some practical examples where you can apply source command.

1. Refresh your current shell environment

As a user you can define an alias in your current shell environment. To define one for ls -l type:

alias ll = 'ls -l'

To use it type:

ll

Although the above list the files in the current directory in the long format, it works only for the current shell session. To make the changes permanently, open the ~/.bashrc file and add:

alias ll = 'ls -l'

To refresh the current shell environment type:

source ~/.bashrc

2. Execute a shell script in the context of the current shell environment

A shell script is not aware of the variables you define as a user in your current shell environment. The source command can be used to execute your shell script in the context of the current session.

To define a temporary variable type:

WEBSITE = example.com

To create a custom script type:

#!/bin/bash echo $WEBSITE

Save the file. To execute it in the context of the current shell session type:

source ./myscript.sh

The output is shown below.

example.com

3. Import a shell function

To define a custom shell script type:

!#/bin/bash foo() { echo "test" }

Save the above as script.sh.

To import the function of the above script in your current shell session, type:

source script.sh

To use the foo function type:

foo

The output is shown below.

test

4. Read variables from a shell script

To create a shell script with some variables, type:

#!/bin/bash a=1 b=2 c=3

To read the variables within another shell script type:

#!/bin/bash source abovescript.sh echo $a, $b, $c

The output should be:

1, 2, 3

5. Read and execute commands

Source command can read and execute commands from a file. Lets have a text file with a set of commands.

For example file commands.txt has the following content:

pwd
date

The output of source <filename>:

$ source firstexample.txt /home/developer Fri Feb 25 11:10:11:09 GMT 2021

6. Pass arguments to functions

This section describes how to pass the parameter to the function and same function we can re-use via source command.

functions.sh

!/usr /bin/bash var1=$1 var2=$2

execute.sh

!/usr/bin/bash source functions.sh 10 AA echo “var1 = $var1” echo “var2 = $var2”

Output.sh

var1 = 10 var2 = AA

Conclusion

Source command evaluvated script in the current shell whereas exec command runs in a new shell.

Through this article, you learned four practical examples of the source command. Although all of them are useful, the most important one for you as a user is the first one.

Bobbin Zachariah

Bobbin Zachariah

Bobbin Zachariah is the editor-in-chief of Linoxide and has an experienced team of Linux enthusiastic authors who makes this blog awesome. Linoxide is one of the top 20 Linux Blog by whizlabs.

Leave a Reply

Your email address will not be published.

Previous Story

Apt Update and Upgrade Commands – What’s the Difference?

Next Story

Best Screen Capture Tools for Linux in 2021

Latest from Blog

Top 8 Reasons to Use Garuda Linux

Have you been going back and forth between multiple Linux flavors in search of an exciting experience? Or perhaps you are coming from a Windows or MAC environment and want to try

How to Rename Multiple Files in Linux

In a Linux system, you can easily rename a file using mv command. But, if you have multiple files which you want to rename, in this situation you need some extra tools

How to Install TensorFlow on Ubuntu 20.04

Tensorflow is an open-source platform for machine learning and artificial intelligence. It is developed by the Google Brain team. It contains tools, libraries, and community resources for developers to build ML powered
Go toTop