第五章:文件¶
启动 / 退出文件¶
命令会首先从 /etc/zshenv 读取,这一点不可以被覆盖。随后的行为会被选项 RCS 和 GLOBAL_RCS 修改;前者影响所有启动文件,后者只影响全局启动文件(即此处所述文件中以 / 开头的文件)。若任意时刻取消设定其中一个选项,任何对应类型的启动文件随后都不会被读取。$ZDOTDIR 中的一个文件重新启用 $GLOBAL_RCS 亦可。RCS 及 GLOBAL_RCS 默认都被设定。
随后命令会从 $ZDOTDIR/.zshenv 读取,若 Shell 是登录 Shell,命令会先后从 /etc/zprofile 及 $ZDOTDIR/.zprofile 读取。然后若 Shell 是交互的,命令会先后从 /etc/zshrc 及 $ZDOTDIR/.zshrc 读取。最后如果 Shell 是登录 Shell,读取 /etc/zlogin 和 $ZDOTDIR/.zlogin。
登录 Shell 退出的时候,会读取 $ZDOTDIR/.zlogout 和 /etc/zlogout。这会在通过 exit 或 logout 命令显式退出或者终端读取文件末尾标识符的隐式退出。然而若 Shell 因 exec 到其他程序退出,将不会读取登出文件。这也会受选项 RCS 和 GLOBAL_RCS 的影响。注意 RCS 选项影响历史文件的保存,即若 Shell 退出时未设定 RCS,就不会保存历史文件。
若 ZDOTDIR 未设定,会使用 HOME 代替。取决于安装,上述位于 /etc 的文件也可能在另一目录。
由于 /etc/zshenv 会被所有 Zsh 实例运行,保持它尽可能小很重要,把不需要每个 Shell 都运行的代码置于形如 if [[ -o rcs ]]; then ... 的测试代码后也是好主意,这样 Zsh 带 -f 选项启动时就不会执行它们。
文件列表¶
$ZDOTDIR/.zshenv
$ZDOTDIR/.zprofile
$ZDOTDIR/.zshrc
$ZDOTDIR/.zlogin
$ZDOTDIR/.zlogout
${TMPPREFIX}* (默认 /tmp/zsh*)
/etc/zshenv
/etc/zprofile
/etc/zshrc
/etc/zlogin
/etc/zlogout(取决于安装 - 默认 /etc/)
上述任何文件都可以用内置命令 zcompile 预编译(详见 -> Shell 内建命令)。若存在编译文件(以原文件名加 .zwc 扩展名形式命名)且比原文件新,会使用编译文件。