Nachdem ich herausgefunden habe, was dies shopt -s histappend
bedeutet , scheint es eine sehr vernünftige Einstellung zu sein, und ich bin überrascht, dass es nicht die Standardeinstellung ist. Warum sollte jemand seine Historie bei jedem Shell-Exit löschen wollen?
bash
command-history
Tshepang
quelle
quelle
bash
"pure" oder eine Distribution.bashrc
. für die erstere ist @Gilles wahrscheinlich richtig. im letzteren Sinne-s histappend
ist beispielsweise Debian seit 2008 standardmäßig aktiviertAntworten:
Wenn dies
histappend
nicht festgelegt ist, bedeutet dies nicht, dass der Verlauf bei jedem Shell-Exit gelöscht wird. Ohnehistappend
Bash liest die Histfile beim Start in den Speicher - während des Betriebs werden neue Einträge hinzugefügt - und beim Verlassen der Shell werden die letzten HISTSIZE-Zeilen in die History-Datei geschrieben, ohne sie anzuhängen, dh den vorherigen Inhalt zu ersetzen.Wenn zum Beispiel die Histdatei 400 Einträge enthält, werden während der Bash-Laufzeit 10 neue Einträge hinzugefügt - histize wird auf 500 gesetzt, dann enthält die neue Histdatei 410 Einträge.
Dieses Verhalten ist nur problematisch, wenn Sie mehrere Bash-Instanzen gleichzeitig verwenden. In diesem Fall enthält die Verlaufsdatei nur den Inhalt der zuletzt ausgeführten Shell.
Unabhängig davon: Es gibt einige Leute, die aus Datenschutzgründen ihre Historie beim Shell-Exit löschen möchten.
quelle
histappend
eine Relevanz dafür, obroot
der Verlauf eine Festplatte erreicht? Auch hier wirkt es sich nur auf das aus, was geschrieben steht, nicht wenn .histappend
sowieHISTCONTROL=ignoredups:erasedups:ignorespace
scheint ein guter Standard für die meisten Menschen.histappend
effektiv bedeutungslos, wenn ichHISTFILESIZE=
undHISTSIZE=
für unendliche Geschichte habe?histappend
neue Historie von gleichzeitig ausgeführten Shells würde dann verloren gehen und nur die Einträge der zuletzt ausgeführten Shell würden gespeichert. Übrigens weiß ich nicht, obHISTSIZE=
es den gleichen Effekt wie ein Negativ hatHISTSIZE
.Aus historischen Gründen denke ich. Die
histappend
Option gab es erst mit Bash 2.0.quelle
histappend
.