Сегодня при вызове бэш-терминала я попытался найти часто используемую команду из моей истории бэша через Ctrl-r. К моему удивлению, она не была найдена. Изучив ~/.bash_history
, я увидел экземпляры команды на нескольких строках. История команд не работает, проверяя файл, либо в реальном времени, либо по кэшированной копии?
Оказывается, было немного больше нюансов, чем я знал: HISTFILESIZE
определяет максимальное количество строк, сохраняемых в .bash_history
, а HISTSIZE
определяет количество строк из ~ / .bash_history
, загруженных в кэш с возможностью поиска. После увеличения HISTSIZE
до соответствия HISTFILESIZE
, я смог найти команду через Ctrl - r .
Помимо этого (HISTFILESIZE), есть одна причина, по которой строка не появится в истории: ведущий пробел. Если вы начинаете команду с пробела впереди, например:
$ ls -l
$ ls -l
(дополнительный пробел в начале)
, то последняя не будет отображаться в история. В связи с этим вот как выглядит мой .bashrc:
.bashrc:HISTCONTROL=ignoreboth
.bashrc:export HISTSIZE=100000
.bashrc:export HISTFILESIZE=100000
.bashrc:export HISTCONTROL=ignoredups:erasedups
.bashrc:export HISTTIMEFORMAT="%d/%m/%y %T "
HTH