Permissions 重新加载“.zshrc”的推荐方法?(`source`VS`exec`?)

Permissions 重新加载“.zshrc”的推荐方法?(`source`VS`exec`?),permissions,exec,zsh,zshrc,zsh-alias,Permissions,Exec,Zsh,Zshrc,Zsh Alias,大多数人似乎建议使用source重新加载.zshrc。为什么? 首先,我试用了source~/.zshrc。但是它导致了一个compinit错误(在重新加载时,不是在第一次.zshrc加载时针对新的shell实例) 我的重新加载别名现在是: alias zsh-reload="exec zsh" 而不是: source ~/.zshrc 原因是我以前的重载方法(source)触发了compinit错误 zsh compinit: insecure directories, run compa

大多数人似乎建议使用
source
重新加载
.zshrc
。为什么?

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

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

alias zsh-reload="exec zsh"
而不是:

source ~/.zshrc
原因是我以前的重载方法(
source
)触发了compinit错误

zsh compinit: insecure directories, run compaudit for list.
Ignore insecure directories and continue [y] or abort compinit [n]?
所以我现在做的是
exec
,因为我相信它可以确保以前的环境不会污染新环境

  • 使用
    exec
    方法的缺点是什么
  • 您这样做是否有明确的原因
    exec
    source
  • source
    方法相比,
    exec
    在理论上是否会导致意外问题

使用
exec
,shell中所有(未报告的)变量都将丢失,这可能不是您想要的。相反,最好使用
compinit-i
来解决compinit问题。有关compinit,请参见zsh手册页,compinit的使用段落:

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