linux – 运行多个会话时出现奇怪的bash历史行为
当我使用多个终端窗口时,如何存储命令行历史记录?我知道它存储在.bash_history中,但如果我打开新窗口,我无法看到使用历史记录的逻辑.
从某种意义上说,如果我尝试在新窗口中使用向上箭头,我永远不知道会看到什么命令,这几乎感觉不确定. 有人可以解释一下吗? 有没有办法以这样的方式控制历史,以至于我可以从特定窗口重用历史记录? 解决方法
要首先了解bash历史记录的行为,您必须了解以下内容:
>历史文件中有历史记录. 使用默认设置,bash会话的生命周期与历史有关,如下所示: >在启动期间,bash将读取历史文件.历史文件的内容现在位于bash进程的内存中. 您观察到的看似不确定的行为主要是因为历史文件的内容始终是上次关闭的bash会话的历史记录,而bash仅在启动期间读取历史文件. 阅读bash manual以获取有关启动和关闭过程的更详细说明. 请注意,默认设置是指bash的默认设置.您的发行版可能提供了.bashrc(或/etc/bash.bashrc)来更改此行为. 通过启用shell选项histappend,您可以告诉bash追加而不是覆盖历史文件.您可以使用命令shopt -s histappend启用histappend.要始终启用此选项,您必须将命令放在.bashrc(或其他初始化文件)中.阅读bash manual中有关shopt命令的更多信息 请注意,启用histappend不会减少看似不确定的行为.这是因为每个bash会话在内存中仍然拥有自己的历史记录.可以具有大部分同步的bash历史.有一个指南如何让每个bash进程在a thread on stack overflow中具有大致同步的历史记录. 使用内置命令历史记录,您可以明确告诉bash从文件到内存读取历史记录,或从内存到文件写入.例如:history -r将读取文件的内容并将其附加到内存中的历史记录中. history -w会将当前历史记录从内存写入文件,覆盖以前的内容.这基本上是在关机期间发生的事情.阅读bash manual中有关历史命令的更多信息 为了完整性,这里是一个修改历史行为的内部变量列表: > HISTFILE:要读取和写入历史记录的文件. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |