[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

# 5 Files

[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

## 5.1 Startup/Shutdown Files

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 an 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`. If the shell is a login shell, commands are read from `/etc/zprofile` and then `$ZDOTDIR/.zprofile`. Then, if the shell is interactive, commands are read from `/etc/zshrc` and then `$ZDOTDIR/.zshrc`. Finally, if the shell is a login shell, `/etc/zlogin` and `$ZDOTDIR/.zlogin` are read.

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.

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.

[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

## 5.2 Files

`$ZDOTDIR/.zshenv`
`$ZDOTDIR/.zprofile`
`$ZDOTDIR/.zshrc`
`$ZDOTDIR/.zlogin`
`$ZDOTDIR/.zlogout`
`${TMPPREFIX}*` (default is /tmp/zsh*)
`/etc/zshenv`
`/etc/zprofile`
`/etc/zshrc`
`/etc/zlogin`
`/etc/zlogout` (installation-specific - `/etc` is the default)

Any of these files may be pre-compiled with the `zcompile` builtin command (Shell Builtin Commands). 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.

[ << ] | [ >> ] |  |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

This document was generated on May 14, 2022 using texi2html 5.0.
Zsh version 5.9, released on May 14, 2022.