**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)* - [5 Files](#5-files) - [5.1 Startup/Shutdown Files](#51-startupshutdown-files) - [5.2 Files](#52-files) # 5 Files ----- ## 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. ----- ## 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](Shell-Builtin-Commands.html#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. ----- This document was generated on *February 15, 2020* using [*texi2html 5.0*](http://www.nongnu.org/texi2html/). Zsh version 5.8, released on February 14, 2020.