A side note to mikelward's answer for OSX users: by default Terminal.app starts all shells as login shells[1]. You can easily change this behavior, but it's the default and many people never even know it's set that way. This is different from defaults on many (most?) Linux systems, and so people coming from one direction to the other often become confused about where to put startup information. (I suppose it's not exactly a Linux versus OSX thing. It has more to do with window managers and how you start up your machine. If you log into Gnome, KDE or similar environments though, most terminal windows you start in the GUI are not login shells. So people get used to that behavior.)
[1]: http://cl.ly/If85