.. historic nodename: Files

Files
================================================================================

.. _Startup/Shutdown Files:
Startup/Shutdown Files
--------------------------------------------------------------------------------
.. index:: single: files, startup; Command

.. index:: single: startup files; Command

.. index:: single: files, shutdown; Command

.. index:: single: shutdown files; Command

.. index:: single: RCS, use of; Program

.. index:: single: GLOBAL_RCS, use of; Program

.. index:: single: NO_RCS, use of; Program

.. index:: single: NO_GLOBAL_RCS, use of; Program

.. index:: single: ZDOTDIR, use of; Variable

.. index:: single: zshenv; Command

Commands are first read from ``/etc/zshenv``; this cannot be overridden.
Subsequent behaviour is modified by the ``RCS`` and
``GLOBAL_RCS`` options; the former affects all startup files, while the
second only affects global startup files (those shown here with a
path starting with a ``/``).  If one of the options
is unset at any point, any subsequent startup file(s)
of the corresponding
type will not be read.  It is also possible for a file in ``$ZDOTDIR`` to
re-enable ``GLOBAL_RCS``. Both ``RCS`` and ``GLOBAL_RCS`` are set by
default.

Commands are then read from ``$ZDOTDIR/.zshenv``.
.. index:: single: LOGIN, use of; Program

.. index:: single: zprofile; Command

If the shell is a login shell, commands
are read from ``/etc/zprofile`` and then ``$ZDOTDIR/.zprofile``.
.. index:: single: zshrc; Command

Then, if the shell is interactive,
commands are read from ``/etc/zshrc`` and then ``$ZDOTDIR/.zshrc``.
.. index:: single: zlogin; Command

Finally, if the shell is a login shell, ``/etc/zlogin`` and
``$ZDOTDIR/.zlogin`` are read.

.. index:: single: zlogout; Command

When a login shell exits, the files ``$ZDOTDIR/.zlogout`` and then
``/etc/zlogout`` are read.  This happens with either an explicit exit
via the ``exit`` or ``logout`` commands, or an implicit exit by reading
end-of-file from the terminal.  However, if the shell terminates due
to ``exec``'ing another process, the logout files are not read.
These are also affected by the ``RCS`` and ``GLOBAL_RCS`` options.
Note also that the ``RCS`` option affects the saving of history files,
i.e. if ``RCS`` is unset when the shell exits, no history file will be
saved.

.. index:: single: HOME, use of; Variable

If ``ZDOTDIR`` is unset, ``HOME`` is used instead.
Files listed above as being in ``/etc`` may be in another
directory, depending on the installation.

As ``/etc/zshenv`` is run for all instances of zsh, it is important that
it be kept as small as possible.  In particular, it is a good idea to
put code that does not need to be run for every single shell behind
a test of the form ``if [[ -o rcs ]]; then ...`` so that it will not
be executed when zsh is invoked with the ``-f`` option.

.. only:: not man

    
    
    .. include:: filelist.rst
    

Any of these files may be pre-compiled with the ``zcompile`` builtin
command (see :manpage:`zshbuiltins`).
If a compiled file exists (named for the original file plus the
``.zwc`` extension) and it is newer than the original file, the compiled
file will be used instead.
