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

54

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

user55542
источник
я не знаю встроенного механизма для этого.
Я только комментирую, чтобы, когда на это ответили, я тоже узнал !!
2
debian-administration.org/articles/543 может быть лучшим ответом. По крайней мере, он обрабатывает большие значения бесконечности, чем решение на суперпользователе. :-)
Вы могли бы сократить это до 9999 на практике (или даже до 999; я использую 1000). Я никогда не находил историю больше чем около 1000 полезной. Если я хочу восстановить команду, чтобы превратить ее в скрипт, я обычно делаю это хорошо в тысячах команд. В противном случае, это может пойти, и нет никакого вреда.
Джонатан Леффлер
@JonathanLeffler: Mine 1300 строк, и это столь же мало , как я могу это сделать. Ctrl-R очень полезен.
10

Ответы:

69

это действительно не (а) документально , и я предполагаю , что 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 (и это числовое значение), тогда задушите историю. В противном случае, если для этой переменной НЕТ значения,
откройте историю. Если name равно HISTFILESIZE, а его значение
числовое, обрежьте файл истории, чтобы он содержал не более этого количества
строк. * /

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

export HISTSIZE=""

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

export HISTSIZE="GOTCHA"

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


источник
2
Да благословит тебя смокинг :)
meeDamian
17
Я предлагаю: экспорт HISTSIZE = "БЕСКОНЕЧНЫЙ"
AmanicA