重载`.zshrc`的推荐方法?(`source` VS `exec`?)

Mic*_*rez 5 permissions zsh exec zshrc zsh-alias

大多数人似乎建议使用sourcefor reloading .zshrc。为什么?

首先我试了一下source ~/.zshrc。但它导致了compinit错误(在重新加载时,而不是首次.zshrc加载时的新 shell 实例)。

我的重新加载别名现在是:

alias zsh-reload="exec zsh"
Run Code Online (Sandbox Code Playgroud)

代替:

source ~/.zshrc
Run Code Online (Sandbox Code Playgroud)

造成这种情况的原因是我之前的reload方法(source)触发了compinit错误;

zsh compinit: insecure directories, run compaudit for list.
Ignore insecure directories and continue [y] or abort compinit [n]?
Run Code Online (Sandbox Code Playgroud)

所以我现在正在做,exec因为我相信它可以确保以前的环境不会污染新的环境。

  • 使用该exec方法的缺点是什么?
  • 有没有为你做一个明确的原因exec还是source
  • 可以exec在理论上导致相比意想不到的问题source的方法?

use*_*428 6

使用exec,shell 中的所有(未导出的)变量都将丢失,这可能不是您想要的。相反,通过使用compinit -i. 见zsh的男人页compinit使用compinit的

要使 compinit 静默忽略所有不安全的文件和目录,请使用选项 -i