There are five startup files that zsh will read commands from:
$ZDOTDIR/.zshenv $ZDOTDIR/.zprofile $ZDOTDIR/.zshrc $ZDOTDIR/.zlogin $ZDOTDIR/.zlogout
If ZDOTDIR is not set, then the value of HOME is used;
this is the usual case.
`.zshenv' is sourced on all invocations of the shell, unless the
-f option is set.  It should contain commands to set the command
search path, plus other important environment variables.  `.zshenv'
should not contain commands that produce output or assume the shell is
attached to a tty.
`.zshrc' is sourced in interactive shells. It should contain commands to set up aliases, functions, options, key bindings, etc.
`.zlogin' is sourced in login shells.  It should contain commands
that should be executed only in login shells.  `.zlogout' is
sourced when login shells exit.  `.zprofile' is similar to
`.zlogin', except that it is sourced before `.zshrc'.
`.zprofile' is meant as an alternative to `.zlogin' for ksh
fans; the two are not intended to be used together, although this could
certainly be done if desired.  `.zlogin' is not the place for alias
definitions, options, environment variable settings, etc.; as a general
rule, it should not change the shell environment at all.  Rather, it
should be used to set the terminal type and run a series of external
commands (fortune, msgs, etc).