How to make OS X to read .bash_profile not .profile file

According to the manual page that ships with OS X:

... 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.

It should only read ~/.profile as a last resort if neither ~/.bash_profile nor ~/.bash_login are readable.

On all of my OS X systems, I have my ~/.bash_profile set to:

if [ -f ~/.bashrc ]; then
    source ~/.bashrc
fi

It is highly recommended that you do this on OS X in order to get bash to read your ~/.bashrc file like you would expect.


It's also possible that your terminal shell is defaulting to sh instead of bash. You can verify this first:

$ echo $SHELL
/bin/tcsh

To change this to bash, you can go into your Terminal -> Preferences -> Startup tab, and change "Shell Opens With:" from "Default login shell" to Command and value "/bin/bash".

Alternately, you can change your default shell by executing the following command at the command prompt:

chsh -s bin/bash

After you do one of these, open a new shell window, and your .bash_profile should be sourced.


According to Apple,

zsh (Z shell) is the default shell for all newly created user accounts, starting with macOS Catalina.

So you should verify your default shell with the command:

$ echo $SHELL

If the result is /bin/bash your default shell is BASH, and if the result is /bin/zsh the default is ZSH.

Go to home with $ cd ~/ and create the profile (if it does not exist) and edit it with the commands:

For bash:

$ touch .bash_profile
$ open .bash_profile

For ZSH:

$ touch .zprofile
$ open .zprofile

For anyone else who finds this, instead of bash_profile, for new versions of mac you can use .zshrc. I.E., do

open .zshrc

and add what you need there.