Ale*_*man 15 linux bash command-line-interface
当我使用多个终端窗口时,命令行历史是如何存储的?我知道它存储在,.bash_history
但如果我打开新窗口,我看不到使用什么历史记录的逻辑。从某种意义上说,几乎感觉是不确定的,如果我尝试在新窗口中使用向上箭头,我永远不知道我会看到什么命令。
有人可以解释一下吗?
有没有办法以可以重用特定窗口中的历史记录的方式控制历史记录?
les*_*ana 14
要首先了解 bash 历史记录的行为,您必须了解以下内容:
使用默认设置,bash 会话相对于历史的生命周期如下:
您观察到的看似不确定的行为,主要是因为历史文件的内容始终是上次关闭的 bash 会话的历史记录,而 bash 仅在启动时读取历史文件。
阅读bash 手册以获取有关启动和关闭过程的更详细说明。
请注意,默认设置是指来自 bash 的默认设置。您的发行版可能提供了一个.bashrc
(或/etc/bash.bashrc
)来改变这种行为。
通过启用 shell 选项,histappend
您可以告诉 bash 追加而不是覆盖历史文件。您可以histappend
使用命令启用shopt -s histappend
。要始终启用此选项,您必须将命令放入.bashrc
(或其他初始化文件)中。shopt
在bash 手册中阅读有关该命令的更多信息
请注意,启用histappend
不会减少很多看似不确定的行为。这是因为每个 bash 会话在内存中仍然有自己的历史记录。有可能拥有大部分同步的 bash 历史记录。有一个指南如何让每个 bash 进程在堆栈溢出的线程中具有大部分同步的历史记录。
使用内置命令,history
您可以明确告诉 bash 从文件读取历史记录到内存,或从内存写入文件。例如:history -r
将读取文件的内容并将其附加到内存中的历史记录中。history -w
将当前历史从内存写入文件,覆盖之前的内容。这基本上是关闭期间发生的情况。history
在bash 手册中阅读有关该命令的更多信息
为了完整起见,这里是修改历史行为的内部变量列表:
HISTFILE
:要读取和写入历史记录的文件。HISTFILESIZE
: 历史文件的最大行数。HISTSIZE
:内存中历史记录的最大行数。HISTCONTROL
, HISTIGNORE
, HISTTIMEFORMAT
: 与本次讨论无关。有关详细信息,请阅读bash 手册。 归档时间: |
|
查看次数: |
2344 次 |
最近记录: |