Answers:
您只需HISTSIZE
在bash个人资料(~/.bash_profile
)中进行设置。您可以保持HISTFILESIZE
不变。这将配置都在内存中的历史和基于文件的历史记录。
# Saves 10 million lines in memory and in the bash history file.
HISTSIZE=10000000
问题是HISTFILESIZE仅在启动会话时设置存储到文件的最大历史记录。HISTSIZE是确定在会话结束时保存多少行的内容。如果HISTFILESIZE大于HISTSIZE,您将看不到比HISTSIZE更多的东西,因为文件已被HISTSIZE命令覆盖(除非您设置要附加的历史记录,但这是一个单独的主题:histappend
在shell内置命令中查找查找) 。
这就是您看不到效果的原因。缺省情况下,HISSIZE(可能是500)使历史文件总是被最新的$ HISTSIZE命令覆盖。任何较旧的内容(可能会使列表超过$ HISTSIZE的内容)都被抹掉。
在大多数情况下,无需独立于HISTSIZE设置HISTFILESIZE。
HISTSIZE确定将多少行写入历史文件。退出历史记录之前,命令列表将被截断,然后再写入历史记录文件,并保留N个最新行。默认情况下,此列表将覆盖历史记录文件。
HISTFILESIZE确定历史文件的大小(以行为单位)。该文件在启动时被截断,保留N个最新行。此外,只要设置了HISTFILESIZE,历史记录文件就可能被截断。
最后,尽管似乎没有记载,但是BASH如果在启动过程中设置了HISTSIZE,则会根据HISTSIZE设置HISTFILESIZE。我已经在macOS和几种Ubuntu上进行了尝试,其行为是一致的。如果您在启动文件中设置HISTSIZE(无论如何不通过命令行),则HISTFILESIZE将设置为匹配。(尝试一下:在.bash_profile中将HISTSIZE设置为任意大的值,退出并启动新的终端,然后echo $HISTSIZE $HISTFILESIZE
,您将发现它们匹配。)
结果,除非您想要不同的值,否则没有理由触摸HISTFILESIZE,并且用例具有不同的值的情况很少(通常会涉及更多的历史记录自定义设置以获得有用的信息)。