What is the difference between .bash_profile and .bashrc?

Bash Startup Files

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

.bash_profile

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.

Use .bash_profile to run commands that should run only once, such as customizing the $PATH environment variable .

.bashrc

If you’ve already logged into your machine and open a new terminal then .bashrc is executed where you can type in any command. .bashrc is also run when you start a new bash instance by typing /bin/bash or bash in a terminal.

In other words, here you can put the commands that should run every time you launch a new shell in the .bashrc file. This include your aliases and functions , custom prompts, history customizations , and so on.