oh-my-zshzshrc

oh-my-zsh not applying themes


I just set up zsh together with oh-my-zsh. But there's a bit of strange behavior that I cannot understand. If I restart Terminal (or iTerm 2––the behavior is the same in either) the theme specified in ~/.zshrc is not loaded. I need to do source ~/.zshrc for it to happen. If I echo $ZSH_THEME I get the theme I specified in ~/.zshrc. (And if I add echo "I'm loading it." to the bottom of ~/.zshrc, for example, I get the expected message upon opening a new window, etc.)

This question is very similar to mine. But none of the suggestions there appear relevant: the problem there was that some bits of ~/.zshrc were not being loaded, whereas in my case it seems they are being 'read' but not 'loaded' if that's a thing.

In case this is relevant: I do not have any files named .zprofile or .profile in my home directory.

Another bit of relevant information. If I change the value of ZSH_THEME in my .zshrc file, I need to source it twice in order to activate the new theme.


Solution

  • Posting here in case it helps others. The problem was that I was loading the theme after source $ZSH/oh-my-zsh.sh, so clearly oh-my-zsh wasn't loading it. (The instructions in the .zshrc template generated by oh-my-zsh are a little confusing. On a quick read they suggest that themes should be loaded below the User configuration line.)