Как получить бесконечную историю команд в bash?

Как получить бесконечную историю команд в bash?

Я установил export HISTSIZE=99999999999999, но это лучший способ? Я не знаю, может ли произойти переполнение. Я ищу проверенный, надежный способ снять ограничения истории команд.

решение1

Это точнонет(хорошо) документировано, и я полагаю, что 99% пользователей bash в этом плане устанавливают HISTSIZE на ооочень большое число.

В GNU bash история обрабатывается через мощную библиотеку readline. Библиотека имеет возможность ограничивать размер истории ("stifle" на жаргоне readline) или нет, и bash просто устанавливает историю readline в stifled/unstifled. Если вы посмотрите, например, на GNU bash версии 4.2, файл variables.c, строка 4443, функция void sv_histsize (char*), вы найдете этот комментарий (и все stifling/unstifling в следующей функции):

/* Что делать после изменения переменных HISTSIZE или HISTFILESIZE.
Если есть значение для этого HISTSIZE (и оно числовое), то отключить историю. В противном случае, если НЕТ значения для этой переменной,
отключить историю. Если имя HISTFILESIZE, и его значение
числовое, обрезать файл истории, чтобы он вмещал не более указанного количества
строк. */

Итак, это должно сработать:

export HISTSIZE=""

И еще это (если вы настроены вызывающе):

export HISTSIZE="GOTCHA"

Надеюсь это поможет.

Связанный контент