如何重置shell环境?

如何重置shell环境?

这个问题已经困扰我一段时间了,尽管我认为我已经找到了答案环境观察者,不幸的是它只适用于 Bash。我使用 zsh。

我想复制 env-watcher 所做的事情,也许程度较小,但我需要知道是否有一个命令可以将 shell 重置到干净的启动阶段。

例如,我想要以下工作流程。

source some-functions
alias another-thing
export SVN_EDITOR=vim
RESET-ZSH # none of the above are valid any more

是否存在这种内在的可能性,还是我在追逐蝴蝶?

答案1

您可以直接exec zsh,这将为您提供一个新的 zsh 并重新运行 init 函数。请注意,您需要exec zsh -l登录 zsh 才能保持其“登录 shell”状态。我不知道它保存命令历史记录的效果如何(它似乎对我有用,但如果您在不同的终端中使用多个 shell,您可能会在两个 shell 的历史记录之间出现“串扰”)

答案2

要撤消导出的环境变量,可以使用env命令env -i zsh。 env运行作为参数给出的命令,并-i为其提供一个干净的环境。

根据您的配置,您可能需要附加-lzsh / bash才能加载您的.profile,并且您还可能需要“引导”您的环境,$HOME以便 shell 知道在哪里可以找到您的启动文件。总而言之,这看起来像:

env -i HOME="$HOME" zsh -l

相关内容