Whereas .profile is read by many shells in the absence of their own shell-specific config files.
.profile was used by the original bourne shell.
Login shells (eg. ssh sessions)
.bash_profile or .profile is read by login shells, along with .bashrc
tmux by default runs login shells when you open new panes/windows, you can configure it to spin non-interactive shells
It login shells, .bashrc is not automatically sourced, .profile or .bash_profile needs to source it
Sub shells/Non-interactive shells
.bashrc is for non-login shell.
But for subshells, .bashrc is executed automatically
subshells inherit the parent(login shell’s) environment. So you’d not want to keep setting env vars again and again, so you’d set them in .bash_profile