HISTSIZE
это количество строк или команд, которые хранятся в памяти в списке истории, пока ваш сеанс bash продолжается.
HISTFILESIZE
количество строк или команд, которые (a) разрешены в файле истории во время запуска сеанса, и (b) сохранены в файле истории в конце сеанса bash для использования в будущих сеансах.
Обратите внимание на различие между file
: на диске - и list
: в памяти.
Вся информация выше + несколько примеров:
Пример 1 :
HISTFILESIZE=10
иHISTSIZE=10
histappend
он не включен, команды с 41 по 50 сохраняются в вашем HISTFILE, который теперь содержит 10 команд, которые он удерживал в начале, плюс 10 вновь написанных команд.Пример 2 :
HISTFILESIZE=10
иHISTSIZE=5
histappend
он не включен, команды с 46 по 50 сохраняются в вашем HISTFILE, который теперь содержит 10 команд, которые он удерживал в начале, плюс 5 вновь написанных команд.Пример 3 :
HISTFILESIZE=5
иHISTSIZE=10
histappend
он не включен, команды с 41 по 50 сохраняются в вашем HISTFILE, который теперь содержит 5 команд, которые он удерживал в начале, плюс 10 вновь написанных команд.Информация от elixir_sinari :
История файла не обновляется при вводе команд. Команды хранятся в «списке» отдельно (доступ к команде истории). Количество этих сохраненных команд контролируется значением HISTSIZE. Когда оболочка (интерактивная) закрывается, последние строки $ HISTSIZE копируются / добавляются в $ HISTFILE из этого «списка». Если установлен HISTFILESIZE, то после этой операции гарантируется, что в $ HISTFILE существуют только строки $ HISTFILESIZE (самые последние). И когда оболочка запускается, «список» инициализируется от $ HISTFILE до максимум команд $ HISTSIZE.
И со man bash
страницы:
Значение переменной HISTSIZE используется в качестве количества команд для сохранения в списке истории. Текст последних команд HISTSIZE (по умолчанию 500) сохраняется. (...)
При запуске история инициализируется из файла, названного переменной HISTFILE (по умолчанию ~ / .bash_history). Файл, названный значением HISTFILE, усекается, если необходимо, чтобы он содержал не более количества строк, указанных значением HISTFILESIZE. (...) При выходе из интерактивной оболочки последние строки $ HISTSIZE копируются из списка истории в $ HISTFILE. Если включена опция оболочки histappend (см. Описание shopt в разделе «Команды SHELL BUILTIN» ниже), строки добавляются в файл истории, в противном случае файл истории перезаписывается. Если HISTFILE не установлен или если файл истории недоступен для записи, история не сохраняется. (...) После сохранения истории файл истории усекается до не более чем строк HISTFILESIZE. Если HISTFILESIZE не установлен,
Основываясь на том, что сказал Артуромп, и чтобы сделать это немного яснее.
Предполагая, что у вас есть 2000-летняя история ..
Вы можете сократить то, что вам показывают
HISTSIZE
Теперь, независимо от того, сколько команд вы наберете, будут записаны только последние 5.
Мы ясно видим, что нашей первой команды («ABC») нет в истории, поскольку были записаны только последние 5 команд.
Теперь общая история сохраняется в файле (
.bash_history
), и вы можете изменить время, которое этот файл получает сHISTFILESIZE
. Например, с2033
HISTFILESIZE
, в моем случае у меня было бы это:источник
HISTSIZE=-1
иHISTFILESIZE=-1
.bash
странице руководства написано:Non-numeric values and numeric values less than zero inhibit truncation
но тогда у меня не хватило смелости проверить, правда ли это, потому что я не хочу терять свою историю :-)HISTSIZE='INFINITY'
иHISTFILESIZE='ANDBEYOND'
. Поскольку они не числовые, они сохраняют все. Спасибо за чаевые!