如何在不替换当前shell的情况下重新加载ZSH config文件?

如何在不替换当前shell的情况下重新加载ZSH config文件?,shell,scripting,zsh,zshrc,Shell,Scripting,Zsh,Zshrc,我如何告诉ZSH重新加载它自己,就像它是一个新调用的shell一样,但不丢失历史记录 这样做的背景是,我花了很长时间构建我的ZSH设置,如果我当前的机器出现故障,或者驱动器损坏等,我不想丢失它。为此,我将所有本地ZSH配置文件放在git存储库中。到目前为止没有什么新鲜事 但现在我想向存储库添加一个“安装”脚本,以简化在新机器上安装安装程序的过程。一旦安装了文件(实际上,在${ZDOTDIR-~}中创建的符号链接指向存储库中的文件),我希望脚本重新加载这些文件,而不必通过exec替换当前进程(从而

我如何告诉ZSH重新加载它自己,就像它是一个新调用的shell一样,但不丢失历史记录

这样做的背景是,我花了很长时间构建我的ZSH设置,如果我当前的机器出现故障,或者驱动器损坏等,我不想丢失它。为此,我将所有本地ZSH配置文件放在git存储库中。到目前为止没有什么新鲜事

但现在我想向存储库添加一个“安装”脚本,以简化在新机器上安装安装程序的过程。一旦安装了文件(实际上,在${ZDOTDIR-~}中创建的符号链接指向存储库中的文件),我希望脚本重新加载这些文件,而不必通过exec替换当前进程(从而丢失历史记录),也不必逐个查找文件(并冒着可能以错误的顺序加载它们或错过ZSH启动过程的其他部分的风险)

ZSH中是否内置了一些功能,或者以其他方式告诉它重新加载所有内容,就像它是一个新启动的实例一样,同时保留命令历史记录

编辑:哈。嗯。人力资源管理。当然,我现在已经清除了我的。zshrc和。zlogin,尽管后者不是很大的困难(它只是有RVM的设置,很容易恢复).然而,前者令人痛心。任何人如果能告诉我如何从已获取.zshrc的shell中恢复该shell,我将获得所有的超级奖励分数。当然,对原始问题的回答仍将被标记为已接受


我遇到了一个问题。我编写了一个shell脚本。

通常是一个
源代码。zshrc
应该这样做。

您可以启用
INC\u APPEND\u HISTORY
选项。从手册页:

公司附加历史

除了新的历史记录外,此选项与附加历史记录类似 行以增量方式添加到$HISTFILE中(只要它们 ,而不是等待外壳退出。这个 文件仍将定期重新写入以在 行数比$SAVE指定的值增加20% HIST(另请参见HIST_保存_按_复制选项)


这样,您就可以在不丢失历史记录的情况下执行
exec zsh

这有点旧,但您可以始终向.zshrc添加一个函数,为您提供所有配置文件

function reload(){
       source ~/.zshrc
       source ~/.zshenv
       ...
   }

所以你所要做的就是在你的shell中重新加载。

这是我认为最接近我想要做的事情。非常感谢。订单很重要。通常
.zshenv
.zshrc
之前读取。