In ~/.bash_profile I have :

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

In ~/.bashrc I have some aliases

When I load a new iTerm window, my aliases do not work. If I source ~/.bashrc they work. If I source ~.bash_profile they work.

Isn't at least one of these supposed to be sourced automatically?

What might be causing it not to work properly?

3 Answers 3


The answer is simple, almost evident in the question. Here's why:

The shell zsh is not bash, it is a different shell. zsh will not use the default files built for bash: .bashrc or .bash_profile. These two files are startup configuration files for bash. zsh has its own startup configuration files.

You can find out more about them here on the zsh intro page:

There are five startup files that zsh will read commands from:


You had mentioned your aliases don't work, to fix this, apply your aliases here like so:


alias sz='source ~/.zshrc'     # Easily source your ~/.zshrc file.
alias ls='pwd; ls --color'     # Alias 'ls' to: pwd + ls + color.
  • 2
    Thank you. Note that ls --color gave me illegal option in both bash and zsh on OSX 10.10, but not on Linux -- I'll look into it. Cheers. Jul 10, 2015 at 2:18
  • 1
    I don't have a Mac to test on but I think this has to do with the ls implementation on OS X, I don't think it has the - -color argument. If I remember I'll look it up. Jul 10, 2015 at 2:25
  • 3
    "... zsh has its own startup configuration files." this is what he probably asks for huh? just say "dude, it is ~/.zshrc".
    – eyurdakul
    Oct 15, 2018 at 12:32
  • 1
    +1 great tips in the answer for macOS Catalina now using zsh officially. Thank you. Nov 13, 2019 at 13:59
  • For macOS, use ls -G insted of ls --color
    – jonny
    Mar 10, 2021 at 9:35

If you are using zsh then to force source .bash_profile

in ~/.zshrc add the line below

source ~/.bash_profile

P.S - I havent investigated whether this can cause any problem.

  • 3
    I guess this answer would be helpful after release of macOS 10.5 Catalina in order to port bash_profile from bash to zsh. Sep 29, 2019 at 12:23
  • 1
    Fast and effective! Oct 14, 2019 at 12:34
  • 1
    Note this is very bad idea if your .bash_profile calls source .bashrc. Then you'll have a zsh shell loading a bunch of bash code and probably do weird behavior. Feb 19, 2020 at 23:33
  • 1
    @cgnorthcutt Why is loading bash code a problem? If it's just setting up some simple aliases, for example.
    – James Koss
    Mar 5, 2020 at 15:18
  • 3
    @JamesKoss Say the next day you install a program that modifies your .bashrc to loop over a bunch of other aliases to add. Oops... zsh and bash use different looping indices, and now your .zshrc is broken. Mar 5, 2020 at 20:49

Copy the lines from ~/.bash_profile to ~/.zshrc

cat ~/.bash_profile >> ~/.zshrc

And open a new terminal tab/window or use source ~/.zshrc

  • 1
    This deleted all my ~/.zshrc previous contents. Mar 28, 2020 at 22:21
  • 5
    @GerardReches Sorry for the mess. In my case, I didn't have ~/.zshrc so > will create and add the lines from ~/.bash_profile. you should have used >> update operator to append `~/.zshrc. Mar 30, 2020 at 7:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.