无法增加Mac OSX bash shell历史记录的长度


26

不久前,我将〜/ .bash_profile设置为具有500行以上的长度,但是似乎系统无法捕捉到这一点。

你知道为什么吗?

> nano -w ~/.bash_profile
export CLICOLOR=1
export LSCOLORS=GxFxCxDxBxegedabagaced
HISTFILESIZE=10000000

> history | wc -l
     500

Answers:


34

您还需要设置HISTSIZE=10000000

HISTFILESIZE确定要保留在历史记录文件中HISTSIZE的行数,同时确定要保留在内存中的行数。两者都默认为500

echo $HISTFILESIZE $HISTSIZE进行更改之前执行,然后执行。您应该10000000 500先看到然后再看到10000000 10000000


16

您需要在文件中导出 HISTSIZEHISTFILESIZE环境变量~/.bash_profile

在您的中添加以下行~/.bash_profile

# history size
export HISTFILESIZE=1000000
export HISTSIZE=1000000

9

回答:

您只需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命令覆盖(除非您设置要附加的历史记录,但这是一个单独的主题:histappendshell内置命令中查找查找) 。

这就是您看不到效果的原因。缺省情况下,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,并且用例具有不同的值的情况很少(通常会涉及更多的历史记录自定义设置以获得有用的信息)。


您是正确的Zim。Bash源代码显示,如果未设置HISTFILESIZE,它将仅将HISTFILESIZE设置为HISTSIZE。 git.savannah.gnu.org/cgit/bash.git/tree/…–
罗伯特,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.