03. Bash startup files .bash_profile, .bashrc

When the bash starts up, it reads configuration files to set up the environment. These files are known as startup files.

Startup files work by first loading the default environment shared by all users. Then it loads files in the user's home directory to give a more tailored experience per user.

Two types of shell logins

There are two types of shell logins: login and non-login shell sessions. Depending on which one you choose to boot your shell, a different group of startup files are executed.

Login shell sessions

For a login shell session, a username and password in necessary.

Here is the order in which the startup files are executed in a login shell.

/etc/profile
Global configuration file that loads for all users.
Automatically read into shell if login shell.
/etc/bashrc
Global configuration file that loads for all users.
~/.bash_profile
The user's personal startup file.
Oftentimes the .bash_profile file contains code that executes the .bashrc file.
~/.bash_login
This file is executed if a user's .bash_profile is missing.
~/.profile
A fallback file if the above two are not found.
~/.bash_logout
Executed when a user logs out.

Non-login shell sessions

Non-login shells inherit the environment from their parent process.

/etc/bash.bashrc
Configuration file for all users.
~/.bashrc
Startup file.

The main difference in files being executed is that login shells run .bash_profile on startup, while non-login shells run .bashrc. However, .bashrc is usually executed from .bash_profile.

Hidden files

Remember that the . before a file name means that it is hidden. To view hidden files, use ls -a.

Configuring our environment

There is a convention of where to store certain variables when configuring your environment.

If you want to add any directories to your $PATH, you should do it in your ~/.bash_profile. For all others (configuring aliases or setting umask), place it in ~/.bashrc.

In the next section, let's talk about how to properly set environment variables so that your settings are loaded upon every login.

Take your Linux skills to the next level!

Linux for Beginners

Take your Linux skills to the next level! Try Linux & UNIX

Linux for Beginners doesn't make any assumptions about your background or knowledge of Linux. You need no prior knowledge to benefit from this book. You will be guided step by step using a logical and systematic approach. As new concepts, commands, or jargon are encountered they are explained in plain language, making it easy for anyone to understand.

$ Check price
24.9924.99Amazon 4.5 logo(101+ reviews)

More Linux & UNIX resources

Aching back from coding all day?

Inversion Therapy Table

Aching back from coding all day? Try Back Problems

Stretch out your back and relieve your back muscles with inversion therapy. This device counteracts the forces of gravity on the body by decompressing and elongating the spine. By using this product just ten minutes a day, you can be well on your way to improved circulation and posture while relieving muscle aches, back pain and stress.

$$ Check price
119.98119.98Amazon 4.5 logo(1,700+ reviews)

More Back Problems resources

Ad