Ubuntu – What does the export PATH line in .bashrc do

bashbashrccommand lineenvironment-variables

I am not so into Linux and I have the following doubt following a tutorial.

I have to modify the bashrc file. What kind of settings are contained in this file? I think something related the bash shell environment but I am not so sure about it.

I have to insert this line:

export PATH=$HOME/.local/bin:$HOME/.local/usr/bin:$PATH

What exactly does this line?

I think that export statement is used to create a new variable making it available for other program.

But what exactly does this line? Is PATH the name of the variable that I am defining? What is $HOME?

What means the : symbol between PATH=$HOME/.local/bin and $HOME/.local/usr/bin and $PATH section in the previous expression?

What exactly does this expression mean?

Best Answer

To recap everything mentioned in this question,

The export part

The export line means that the variable that you declare after it will be accessible to child processes. In other words, processes will be able to access the variable declared after the export keyword through the shell's environment. So, if you did something like export FOO="BAR" and then sourced the changes in your shell environment, you could type $FOO and get BAR.

The PATH part

The path line is just as you stated: it's declaring a variable that's named PATH for the shell environment. In the bash environment, PATH has a special purpose of defining where the computer looks for programs is. This lets you type custom commands for scripts without typing the full directory. Note that PATH is marked for export by default, so this line doesn't have to be rewritten. It doesn't hurt, though.

The $HOME in the PATH variable

At the beginning of the path that is assigned to the PATH variable, $HOME is declared. This means that the computer will pretty much grab the value stored in HOME and copy-paste it in front of the rest of the line when reading it.

The : in between both paths

The : is equivalent to a comma in sentences. It just separates the three directories. Without those three directories, the console would not recognize the commands it receives. Those three places are the three directories that are most commonly used for scripts/command files to be stored and therefore should be accessible by the terminal without having to write out the full path to the file.