52

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

1 ответ1

66

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

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

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

Так что это должно сработать:

export HISTSIZE=""

А также это (если вы чувствуете себя вызывающе):

export HISTSIZE="GOTCHA"

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .