.bashrc file is designed to hold things you want executed each time a new interactive shell is started. This isn't the right place to set your
PATH variable, for example, you should only have things that you need to run on each shell initialization.
This is why we have two "families" of configuration files for bash:
~/.bashrc are read each time a new interactive shell that is not a login shell is started.
~/.profile (in that order) are sourced each time a new interactive login shell is started.
What this means in practice, for most systems, is that the
~/.profile group of files are read once, when you log in and then the
~/.bashrc files are read each time you open a new terminal or start a new interactive shell.
Therefore, if you see that things in your
~/.bashrc are being executed and causing you problems each time you start a new shell, that means your system has been misconfigured and you're using
~/.bashrc when you should be using
~/.profile. In other words, yes,
.bashrc is absolutely supposed to be executed every time you start a new interactive non-login shell.