Where are bash profile startup files?

Solution 1:

This probably doesn't answer the mail question but here is some more info on the startup files.

Are you searching for the files in Finder? Make sure that you are searching from a terminal and using ls -A so that hidden files (files beginning with a '.') show up.

The following is from the Bash Reference Guide. It describes the startup files that are executed when you start a new terminal window in OS X (which is an interactive, login shell).

6.2 Bash Startup Files

This section describes how Bash executes its startup files. If any of the files exist but cannot be read, Bash reports an error. Tildes are expanded in file names as described above under Tilde Expansion (see Section 3.5.2 [Tilde Expansion], page 19).

Interactive shells are described in Section 6.3 [Interactive Shells], page 75.

Invoked as an interactive login shell, or with ‘--login’

When Bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads and executes commands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable. The --noprofile option may be used when the shell is started to inhibit this behavior.

When a login shell exits, Bash reads and executes commands from the file ‘~/.bash_logout’, if it exists.

Solution 2:

That particular line (You have mail) isn't actually part of bash's startup but an alert that your local account on your computer has received mail for some reason.

You can use mail to read and delete the message or just delete the message (most likely a bounce back or something from development) from /var/mail/username

Solution 3:

This notification is configured by environment variable MAILCHECK. See man bash and search for MAILCHECK (press / and type MAILCHECK to search in the man page).

Here's the relevant excerpt:

 MAILCHECK
              Specifies how often (in seconds)  bash  checks  for  mail.   The
              default  is  60 seconds.  When it is time to check for mail, the
              shell does so before displaying the  primary  prompt.   If  this
              variable  is  unset,  or  set  to  a  value that is not a number
              greater than or equal to zero, the shell disables mail checking.

To verify that this variable is indeed set, run echo $MAILCHECK

To disable this notification, add the following line to your ~/.bashrc

unset MAILCHECK