Wie verfolgt Zsh den Befehlsverlauf?
Ich sehe zwei Dateien in meinem Homeverzeichnis: .zhistory
und .zsh_history
. Was ist der Unterschied zwischen ihnen? Die Dateien scheinen meine gesamte Historie zu enthalten . Hat Zsh halten Linien zu einem von ihnen anhängt für immer ? Wäre die Suche nach Verlauf nicht zu langsam?
Kann ich diese Dateien sicher als symbolische Links zu einem anderen Speicherort einrichten? (zB ein Git-Repository, um Änderungen im Verlauf zu verfolgen)
zsh
command-history
Amelio Vazquez-Reina
quelle
quelle
~/.zshrc
und / oder/etc/zshrc
die dort beschriebenen Optionen. Zsh.sourceforge.net/Guide/zshguide02.html#l17Antworten:
Zsh speichert Eingabezeilen (möglicherweise mit Zeitinformationen) in der durch die Variable angegebenen Datei
HISTFILE
. Dies sollte ein absoluter Dateiname sein (ansonsten wird er relativ zu dem jeweils aktuellen Verzeichnis interpretiert).Zsh hat keinen eingebauten Standardwert für
HISTFILE
. Die zsh-Distribution wird mit einem Setup-Assistenten für neue Benutzer ausgeliefert, in den der Wert~/.histfile
integriert ist. Daher erhalten zsh-Benutzer diesen Assistenten standardmäßig. Oh-my-zsh wird mitHISTFILE=.zhistory
Voreinstellung geliefert. Es sieht also so aus, als hätten Sie zsh sowohl mit dem Standard-Setup als auch mit oh-my-zsh ausprobiert. Überprüfen Sie Ihre.zshrc
(oder die Dateidaten), um festzustellen, welche Sie gerade verwenden.Wie zsh die Datei öffnet und was passiert, wenn es sich um eine symbolische Verknüpfung handelt, hängt von mehreren Optionen ab.
append_history
(standardmäßig festgelegt)inc_append_history
odershare_history
festgelegt ist oder wenn der Verlauf explizit mit gespeichert wirdfc -AI
, wird zsh an die vorhandene Datei angehängt.Beachten Sie, dass zsh auch unter diesen Einstellungen die Datei gelegentlich wie unten beschrieben überschreibt, um sie auf die Größe zu verkleinern.
hist_save_by_copy
schreibt zsh eine temporäre Datei , wenn die Option aktiviert ist (sie ist seit zsh 5.0 standardmäßig aktiviert, in 4.2 jedoch nicht vorhanden) und verschiebt sie nach Abschluss an ihren Platz. In diesem Fall ersetzt die neue Datei die symbolische Verknüpfung, wenn die Verlaufsdatei eine symbolische Verknüpfung war.Anstatt zsh auf einen symbolischen Link zu zeigen, legen Sie fest
HISTFILE
, wo sich die Verlaufsdatei befinden soll.Wie viele Zeilen des Verlaufs aufbewahrt werden, wird über die Variablen
HISTSIZE
und konfiguriertSAVEHIST
.HISTSIZE
ist die maximale Anzahl von Zeilen, die in einer Sitzung aufbewahrt werden, undSAVEHIST
ist die maximale Anzahl von Zeilen, die in der Verlaufsdatei aufbewahrt werden.Um einen Verlauf überhaupt zu speichern, müssen Sie beide
HISTFILE
undSAVEHIST
als StandardwertSAVEHIST
0 festlegen. Möglicherweise möchten Sie auch eine ErhöhungHISTSIZE
vornehmen (ab zsh 5.0 beträgt der Standardwert nur 30).quelle