如何重置外壳环境?


25

这个问题困扰了我一段时间,尽管我认为我已经通过EnvWatcher找到了答案,但不幸的是,它仅适用于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

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

Answers:


32

您可能只是exec zsh,这将为您提供新鲜的zsh并重新运行init函数。请注意,您需要让exec zsh -l登录zsh保持其“登录外壳”状态。我不知道它能很好地保留命令历史记录(这似乎对我有用,但是如果您在不同的终端中使用多个shell,则可能会在两个shell的历史记录之间产生“串扰”)


4
那不会撤消导出的环境变量,对吗?(尽管所有由您的init文件设置的内容都会被重置。)
cjm 2011年

可能不会。我没有考虑过这方面,因为我没有将环境变量视为您在shell中临时设置的东西。
Random832

15

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

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

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

1
您可能还需要另外一些,例如TERMDISPLAY
G-Man说'Resstate Monica''Sep
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.