Skip to main content

What is the difference between .bash_profile and .bashrc? [Resolved]

To make an alias for the Terminal in OS X, you can either put the aliases in .bash_profile or .bashrc. What is the difference between the two and why would I choose to put aliases in one and not the other?

Question Credit: daviesgeek
Question Reference
Asked August 13, 2019
Posted Under: Apple
4 Answers

.bash_profile is executed for login shells, while .bashrc is executed for interactive non-login shells.

When you login (type username and password) via console, either sitting at the machine, or remotely via ssh: .bash_profile is executed to configure your shell before the initial command prompt.

But, if you’ve already logged into your machine and open a new terminal window (xterm) then .bashrc is executed before the window command prompt. .bashrc is also run when you start a new bash instance by typing /bin/bash in a terminal.

On OS X, Terminal by default runs a login shell every time, so this is a little different to most other systems, but you can configure that in the preferences.

credit: jherran
Answered August 13, 2019

X11 will look at your .bashrc while a "regular" Terminal will look at .bash_profile

However, if you add the following to your .bash_profile, you can then move everything into your .bashrc file so as to consolidate everything into one place instead of two:

if [ -f $HOME/.bashrc ]; then
        source $HOME/.bashrc

credit: jherran
Answered August 13, 2019

For macOS, the code to put into .bash_profile to consolidate everything into .bashrc is the following:

if [ -f ~/.bashrc ]; then
    source ~/.bashrc

This is more specific for Mac terminal user.

credit: stkent
Answered August 13, 2019
Your Answer