- What Are Startup Files in Bash
lsCommand to View Startup Files in Bash
This tutorial explains the difference between the
~/.bashrc file in Bash.
What Are Startup Files in Bash
Startup files are files that are executed once the shell is started. The startup files depend on the type of shell that is started. A shell can be executed as an interactive shell or a non-interactive shell.
An interactive shell is a shell that reads commands from user input on the terminal and displays the output to the terminal. In contrast, a non-interactive shell is not associated with the terminal, such as running a script.
An interactive shell can further be divided into two. It can be an interactive login shell or an interactive non-login shell.
A login shell is the first process that is started after successfully logging in using
/bin/login by reading the
/etc/passwd file. The login shell executes under your user ID. A login shell is executed when you log in using the terminal, switch to another user, or use SSH.
The login shell starts a non-login shell. It can be a shell that starts with a process without login or starts from another shell. A process uses the name of the shell executable to start a non-login shell.
~/.bashrc in Bash
Once a shell starts as an interactive login shell, it reads the commands from
~/.profile, but a Bash reads them from
~/.bash_profile instead. Bash can only read the
~/.bash_profile, and if the file doesn’t exist, Bash reads the
~/.profile is more commonly used in Linux distributions than
~/.bash_profile because it’s read and executed by all shells. In contrast, the
~/.bash_profile is only read and executed by Bash.
When the shell is started as an interactive non-login shell, it reads and executes the commands from the
~/.bashrc are located in the user’s home directory as dotfiles. Files in the user’s home directory are used to make configurations that only apply to that particular user.
These configurations usually override the system configurations. The
~/.bash_profile contains startup program configurations and user-specific environment configurations, while the
~/.bashrc file stores functions and aliases for a specific user.
The files located in the
/etc/ directory are used to make system-wide configurations that apply to all users on the system. These files include
ls Command to View Startup Files in Bash
To view the
~/.bashrc, navigate your home directory and type the command
-a option informs the
ls command to list all files, including those starting with a dot. The
-l option informs the
ls command to list the files using a long list format.
The image below shows the
~/.bashrc and the