If you type man bash
, you'll see the manual for Bash. You can navigate up and down the using the 'j' and 'k' keys on your keyboard. You can close the manual by pressing 'q'.
/bin/sh is a historical version of a shell. Bash is similar to sh, but it has some additional features. If you see /bin/sh, that means you're running this historical version of sh rather than Bash (or you might be running Bash, but it's behaving like sh, but this is besides the point - you're effectively running with an sh-like environment). /bin/sh does not read .bash_profile nor does it read .bashrc, so the variables you want set are never actually set.
One workaround is to rename .bash_profile to .profile. .profile is a special file that will be read by both /bin/sh and bash, so in either case you'll have somewhere that gets read. You'd have to move the contents in .bashrc into .profile, however.
Another solution is to change your default shell from /bin/sh to bash. I'm not too clear on how it's done on OS X (Linux systems store this information in /etc/passwd), but you can change the default shell in the terminal application by looking under its Preferences; the default shell should be settable under the General tab.
As another solution, I have a special line in my .profile that looks like the following:
if [ -f "$HOME/.bashrc" ]; then
source "$HOME/.bashrc"
fi
With this, I ensure that my settings in .bashrc will always be read whether I login or when I launch a new shell. I actually have most of my environment variables set inside my .profile file, though, since this file is read only once, and the variables are inherited throughout all my processes.