Wenn ein Benutzer im GUI-Modus mehr als ein Terminal geöffnet hat, wie schreiben die Terminals die Verlaufsdatei dieses Benutzers neu? Der Grund, warum ich frage, ist, dass es durchaus möglich ist, dass der Benutzer in jedem der Terminals unterschiedliche Befehle ausführt. Speichert die Verlaufsdatei also die Befehle von allen Terminals oder nur von dem ersten, das geöffnet wird? Oder gibt es eine andere Art von Schema, das eingesetzt wird, um diese Situation anzugehen?
Akzeptierte Antwort:
Es hängt ganz davon ab, wie die Shell damit umgeht
bash
standardmäßig wird die Verlaufsdatei mit dem lokalen Verlauf jeder Shell beim Beenden überschrieben, sodass die zuletzt beendete Shell gewinnt. Das histappend
Option bewirkt, dass sie stattdessen an den Hauptverlauf angehängt wird (shopt -s histappend
).
zsh
tut dasselbe standardmäßig und hat ein paar Optionen, um damit umzugehen:
appendhistory
— Der Verlauf jeder Shell wird an die Master-Verlaufsdatei angehängt, wenn die Shell beendet wirdincappendhistory
— Die Hauptverlaufsdatei wird jedes Mal aktualisiert, wenn eine Zeile in einer beliebigen Shell ausgeführt wird, anstatt zu warten, bis diese Shell beendet wirdsharehistory
— Wieincappendhistory
, sondern zieht auch Änderungen aus der Master-Verlaufsdatei in alle laufenden Shells, sodass Sie einen Befehl in einer Shell ausführen und dann Nach oben drücken können in einer anderen Shell und sieh es dir an