Fügen Sie dies Ihrem .bashrc
hinzu (Linux) oder .bash_profile
(MacOS):
export HISTFILESIZE=
export HISTSIZE=
Los geht's, unbegrenzte Geschichte. Aktuell habe ich 27000 Einträge :)
Ab man bash
:
Wenn HISTFILESIZE
nicht gesetzt ist, wird keine Kürzung durchgeführt.
Das bedeutet .bash_history
wird nie abgeschnitten
Dasselbe scheint auch für HISTSIZE
zu gelten , obwohl ich das nicht dokumentiert finden konnte.
Ein weiteres nettes Feature, das ich ausprobieren werde, ist dieses:
Wenn die HISTTIMEFORMAT
Variable gesetzt ist, werden Zeitstempel in die Verlaufsdatei geschrieben, die mit dem Verlaufskommentarzeichen gekennzeichnet sind, sodass sie über Shell-Sitzungen hinweg beibehalten werden können, wie folgt:
export HISTTIMEFORMAT="%F %T "
Lassen Sie mich wissen, wenn Sie das bereits versucht haben...
(Reposting meiner Antwort von https://stackoverflow.com/a/19533853/128597)
Nach vielen großen, hässlichen Iterationen und seltsamen Grenzfällen im Laufe der Jahre habe ich diesem Thema jetzt einen kurzen Abschnitt meiner .bashrc gewidmet.
Zuerst müssen Sie diesen Abschnitt Ihrer .bashrc-Datei auskommentieren oder entfernen (Standard für Ubuntu). Wenn Sie dies nicht tun, werden bestimmte Umgebungen (wie das Ausführen von screen
Sitzungen) kürzen Ihren Verlauf weiterhin:
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
# HISTSIZE=1000
# HISTFILESIZE=2000
Zweitens, fügen Sie dies hinzu am Ende Ihrer .bashrc:
# Eternal bash history.
# ---------------------
# Undocumented feature which sets the size to "unlimited".
# https://stackoverflow.com/questions/9457233/unlimited-bash-history
export HISTFILESIZE=
export HISTSIZE=
export HISTTIMEFORMAT="[%F %T] "
# Change the file location because certain bash sessions truncate .bash_history file upon close.
# http://superuser.com/questions/575479/bash-history-truncated-to-500-lines-on-each-login
export HISTFILE=~/.bash_eternal_history
# Force prompt to write history after every command.
# http://superuser.com/questions/20900/bash-history-loss
PROMPT_COMMAND="history -a; $PROMPT_COMMAND"
Hinweis:Jeder Befehl wird sofort nach seiner Ausführung geschrieben. Wenn Sie also versehentlich ein Passwort einfügen, können Sie nicht einfach "-9 %% töten", um das Schreiben des Verlaufs zu vermeiden. Sie müssen es manuell entfernen.
Beachten Sie auch, dass jede Bash-Sitzung die vollständige Verlaufsdatei in den Speicher lädt, aber selbst wenn Ihre Verlaufsdatei auf 10 MB anwächst (was lange, lange dauern wird Zeit) werden Sie keinen großen Einfluss auf Ihre Bash-Startzeit bemerken.
In ~/.bashrc einbinden :
# append a session's history on shell exit
shopt -s histappend
export HISTFILESIZE=
export HISTSIZE=
Diese Antwort erfüllt die folgenden Kriterien:
-
einen separaten Hauptverlauf (keine Sitzung kann Ihren Verlauf unterbrechen)
-
automatisches Schreiben der Historie (keine Hotkeys)
-
seltene Schreibvorgänge (kein Anhängen nach jedem Befehl)
Hintergrund
Beim interaktiven Start, wenn $HISTFILESIZE
auf eine Zahl gesetzt ist, schneidet bash $HISTFILE
ab zu dieser Nummer. Beim interaktiven Schließen, wenn die Shell-Option histappend
gesetzt ist, hängt bash $HISTSIZE
an Zeilen bis $HISTFILE
, andernfalls wird $HISTFILE
überschrieben .
Tipps für OSX (Terminal)
Jedes Mal, wenn ein Tab im Terminal erstellt wird, ~/.bash_profile
gelesen wird, was bedeutet, dass bash Ihren ~/.bashrc
nicht liest . Fügen Sie Ihrem ~/etc/bash_profile
die folgende Zeile hinzu :
# if bashrc has content, source it
[[ -s ~/.bashrc ]] && . ~/.bashrc
Tipps für den Bildschirm
Wenn Sie screen verwenden, ist Ihre Konfigurationsdatei ~/.screenrc. Wenn Sie möchten, dass der Bildschirm den Verlauf aufzeichnet, müssen Sie ihn nur so einstellen, dass er eine Login-Shell verwendet, die Ihre Bash-Startdateien bezieht (und Ihren Verlauf aufzeichnet).
# use bash, make it a login shell
defshell -bash