GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Gibt es eine Möglichkeit, die Größe der Verlaufsliste in Bash auf mehr als 5000 Zeilen einzustellen?

Dies ist der eigentliche Code, der den Verlauf lädt (aus bashhist.c etwa Zeile 260):

/* Load the history list from the history file. */
void

load_history ()
{
  char *hf;

  /* Truncate history file for interactive shells which desire it.
     Note that the history file is automatically truncated to the
     size of HISTSIZE if the user does not explicitly set the size
     differently. */
  set_if_not ("HISTSIZE", "500");
  sv_histsize ("HISTSIZE");

  set_if_not ("HISTFILESIZE", get_string_value ("HISTSIZE"));
  sv_histsize ("HISTFILESIZE");

  /* Read the history in HISTFILE into the history list. */
  hf = get_string_value ("HISTFILE");

  if (hf && *hf && file_exists (hf))
    {
      read_history (hf);
      using_history ();
      history_lines_in_file = where_history ();
    }
}

Wenn die Werte von HISTSIZE und HISTFILESIZE eingestellt sind, werden sie verwendet.

Readline, die Bibliothek, die tatsächlich die Bearbeitung von Eingaben/Zeilen und den Verlauf handhabt macht bieten Möglichkeiten, um zu begrenzen, wie groß der Verlaufspuffer werden kann. Bash setzt dem jedoch keine harte Obergrenze, bei der größere Werte ignoriert würden, zumindest die ich finden konnte.

Bearbeiten

Aus Kommentaren, readline war tatsächlich der Übeltäter. Ich habe (ziemlich töricht) auf funktionale Parameter geschaut:

Es gibt eine Variable namens history-size, die aus der inputrc-Datei gelesen werden kann. diese Variable legt die maximale Anzahl der in der Verlaufsliste gespeicherten Verlaufseinträge fest. Ich habe den Wert in meiner lokalen inputrc-Datei überprüft und festgestellt, dass er gleich 5000 ist. Das Festlegen eines größeren Werts löste das Problem.


Ihr Verlauf wird abgeschnitten, wenn HISTSIZE zum ersten Mal gesetzt wird, also wenn er früher in Ihrem ~/.bashrc auf 5000 gesetzt wurde, oder im systemweiten bashrc in /etc , müssen Sie diese auskommentieren.


Versuchen Sie beide HISTFILESIZE und HISTSIZE .


Linux
  1. UTF-8 durchgängig

  2. Drucken Sie eine Datei, wobei Sie die ersten X-Zeilen in Bash überspringen

  3. Gibt es eine Möglichkeit, den aktuellen rpath unter Linux zu überprüfen?

  4. Gibt es in Bash eine Möglichkeit, die letzte Standardausgabe zu echoen/zu drucken? Gibt es eine Variable, der stdout zugewiesen ist?

  5. Wie kann ich die Größe jeder Datei und jedes Verzeichnisses auflisten und in Bash nach absteigender Größe sortieren?

Bash-Tipps für den Alltag an der Kommandozeile

Die Liste nützlicher Bash-Tastaturkürzel

Retten Sie erfolgreich den Tag mit Bash-Verlaufsbefehlen

Der BASH-Verlauf wird bei jeder Anmeldung auf 500 Zeilen gekürzt

Befehl in Bash ausführen, ohne im Verlauf zu speichern

Gibt es eine Möglichkeit, alle konfigurierbaren „Alternativen“ (Symlinks für ähnliche Befehle) auf dem System aufzulisten?