我如何告诉ZSH重新加载自己,就好像它是一个新调用的shell,但不会丢失历史记录?
这方面的上下文是,我花了很长时间构建我的ZSH设置,如果我的当前机器出现故障,或者驱动器损坏等等,我不想丢失它。为此,我将我的所有本地ZSH配置文件放在一个git存储库中。到目前为止没有什么新鲜事。
但是现在我想向存储库中添加一个'install‘脚本,以简化在新机器上安装我的安装程序。一旦安装了文件(实际上,在指向存储库中的文件的${ZDOTDIR-~}中创建的符号链接),我希望脚本重新加载它们,而不通过exec替换当前进程(因此丢失历史记录),也不逐个查找文件(并且有可能以错误的顺序加载它们或错过ZSH启动进程的其他部分)。
是否有一些内置于ZSH的工具,或者其他方法让它重新加载所有东西,就好像它是一个刚开始的实例一样,同时保存命令历史?
编辑:哈哈。嗯..。人力资源管理。当然,我现在已经删除了我的.zshrc和.zlogin,尽管后者并没有太大的困难(它有RVM的设置,很容易恢复)。然而,前者却让人心痛。任何人谁能告诉我如何从一个外壳恢复一个.zshrc的来源,它得到了我所有的超级奖金。当然,对原来问题的答案仍将被标记为已被接受。
我有个问题。我写了一个shell脚本。http://regex.info/blog/2006-09-15/247 :)
发布于 2017-08-11 15:49:32
您可以启用选项INC_APPEND_HISTORY
。在这篇文章中:
INC_APPEND_HISTORY 这个选项的工作方式类似于APPEND_HISTORY,只不过新的历史记录行是递增地添加到$HISTFILE中的(一旦输入它们),而不是等到shell退出。当行数比$SAVEHIST指定的值增加20%时,文件仍将被定期重写,以修剪它(还请参阅HIST_SAVE_BY_COPY选项)。
这样,您就可以在不丢失历史的情况下完成exec zsh
。
发布于 2016-04-16 20:10:27
通常情况下,source ~/.zshrc
应该这样做。
发布于 2019-05-17 07:12:52
这有点老了,但是您可以始终向.zshrc添加一个函数,该函数为您提供所有配置文件。
function reload(){
source ~/.zshrc
source ~/.zshenv
...
}
所以,您所要做的就是在shell中使用reload
。
https://stackoverflow.com/questions/36668910
复制相似问题