首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在不替换当前shell的情况下重新加载ZSH配置文件?

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

Stack Overflow用户
提问于 2016-04-16 19:47:45
回答 6查看 50.3K关注 0票数 43

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

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

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

是否有一些内置于ZSH的工具,或者其他方法让它重新加载所有东西,就好像它是一个刚开始的实例一样,同时保存命令历史?

编辑:哈哈。嗯..。人力资源管理。当然,我现在已经删除了我的.zshrc和.zlogin,尽管后者并没有太大的困难(它有RVM的设置,很容易恢复)。然而,前者却让人心痛。任何人谁能告诉我如何从一个外壳恢复一个.zshrc的来源,它得到了我所有的超级奖金。当然,对原来问题的答案仍将被标记为已被接受。

我有个问题。我写了一个shell脚本。http://regex.info/blog/2006-09-15/247 :)

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2017-08-11 15:49:32

您可以启用选项INC_APPEND_HISTORY。在这篇文章中:

INC_APPEND_HISTORY 这个选项的工作方式类似于APPEND_HISTORY,只不过新的历史记录行是递增地添加到$HISTFILE中的(一旦输入它们),而不是等到shell退出。当行数比$SAVEHIST指定的值增加20%时,文件仍将被定期重写,以修剪它(还请参阅HIST_SAVE_BY_COPY选项)。

这样,您就可以在不丢失历史的情况下完成exec zsh

票数 18
EN

Stack Overflow用户

发布于 2016-04-16 20:10:27

通常情况下,source ~/.zshrc应该这样做。

票数 68
EN

Stack Overflow用户

发布于 2019-05-17 07:12:52

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

代码语言:javascript
运行
复制
function reload(){
       source ~/.zshrc
       source ~/.zshenv
       ...
   }

所以,您所要做的就是在shell中使用reload

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36668910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档