这个问题已经困扰我一段时间了,尽管我认为我已经找到了答案环境观察者,不幸的是它只适用于 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
为其提供一个干净的环境。
根据您的配置,您可能需要附加-l
到zsh
/ bash
才能加载您的.profile
,并且您还可能需要“引导”您的环境,$HOME
以便 shell 知道在哪里可以找到您的启动文件。总而言之,这看起来像:
env -i HOME="$HOME" zsh -l