Wie erhält man einen unendlichen Befehlsverlauf in Bash?

Wie erhält man einen unendlichen Befehlsverlauf in Bash?

Ich habe es eingestellt export HISTSIZE=99999999999999, aber ist das der beste Weg? Ich weiß nicht, ob ein Überlauf auftreten könnte. Ich suche nach einer getesteten, zuverlässigen Möglichkeit, Befehlsverlaufsbeschränkungen zu entfernen.

Antwort1

Es ist in der Tatnicht(gut) dokumentiert und ich schätze, dass 99 % der Bash-Benutzer in diesem Plan HISTSIZE auf eine seeehr große Zahl setzen.

In der GNU Bash wird der Verlauf durch die mächtige Readline-Bibliothek gehandhabt. Die Bibliothek hat die Option, die Verlaufsgröße zu begrenzen („stifle“ im Readline-Jargon) oder nicht, und Bash setzt den Readline-Verlauf einfach auf „stifled“/„unstifled“. Wenn Sie sich z. B. GNU Bash Version 4.2, Datei variables.c, Zeile 4443, Funktion void sv_histsize (char*) ansehen, finden Sie diesen Kommentar (und die gesamte Stifling/Unstifling-Funktion in der folgenden Funktion):

/* Was zu tun ist, wenn sich die Variablen HISTSIZE oder HISTFILESIZE ändern.
Wenn es einen Wert für diese HISTSIZE gibt (und dieser numerisch ist), dann wird der Verlauf unterdrückt. Andernfalls, wenn es KEINEN Wert für diese Variable gibt, wird
der Verlauf wieder freigegeben. Wenn der Name HISTFILESIZE ist und sein Wert
numerisch ist, wird die Verlaufsdatei gekürzt, sodass sie nicht mehr als diese Anzahl Zeilen enthält
. */

Das hier sollte also funktionieren:

export HISTSIZE=""

Und außerdem (wenn Sie trotzig sind):

export HISTSIZE="GOTCHA"

Hoffe das hilft.

verwandte Informationen