On the subject of bashrc…
I’ve always been confounded by the presence of both .bashrc and .bash_profile and how they related.
It turns out to be simple, but 0% intuitive:
.bashrcis invoked for non-login, interactive shells.bash_profileis invoked for login shells
The difference is powerful, surely, but also annoying. Most of the time, you just want something to always run in bash, and you don’t care about login vs. non-login.
Which is why it’s recommended to have .bash_profile merely source .bashrc.