I'm running zsh 5.1.1 on Ubuntu 16.04. It seems that ~/.zprofile isn't sourced at login nor new terminal. ~/.zshrc is sourced however.

I am running oh-my-zsh.

Any ideas on why this is or how I can fix it?

1 Answer 1


~/.zprofile is only sourced when zsh is run as login shell, e.g. when logging in on the console or via SSH.

It will not be sourced by zsh when opening a new terminal or starting a new zsh session from within a running session. Anything you need in all interactive sessions, should be set in ~/.zshrc. Anything you need in all zsh sessions, including scripts, should be set in ~/.zshenv.

You can find additional information in the zshall manpage and on this site.

~/.zshprofile will (usually) also not be parsed by any other tools. So any environment variables set in ~/.zprofile will usually not be available in an X11 session. If you need some environment variable to be available globally in your session, you might want to have a look at man pam_env.

  • What if login operation is done via ssh authorized key, zsh will still detected as login shell?
    – alper
    Aug 11, 2021 at 22:09
  • @alper that depends on the login shell set for the user in the system and has nothing to do with the ssh connection
    – xeruf
    Dec 14, 2021 at 18:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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