So stoppen Sie das Anhängen des Bash-Verlaufs

9

Ich habe große Probleme, die Terminal-Historie von Bash so einzurichten, wie ich es möchte. Ich möchte keine doppelten Einträge haben und wenn ich einen Befehl eingebe, möchte ich, dass dieser gespeichert und die obigen Duplikate entfernt werden.

Das Problem ist, dass der historyBefehl mir zeigt, dass er so funktioniert, wie ich es möchte, aber sobald ich mich abmelde, kommen die Duplikate wieder zurück. Ich glaube, es wird nur die Geschichte an die bestehende angehängt. Ich habe diese Zeilen in meiner .bashrcDatei:

HISTCONTROL=ignoreboth:erasedups
shopt -u histappend

Ich habe sogar versucht shopt, Kommentare abzugeben, aber der Verlauf wird beim Abmelden immer noch angehängt. Wie kann der Verlauf genau so sein, wie er ist, bevor ich mich abmelde?

Craig
quelle
2
Es gibt eine gute Erklärung hier: unix.stackexchange.com/questions/18212/…
jasonwryan

Antworten:

7

Sie erasedupssollten in Bezug auf die Duplikate das tun, was Sie wollen. Beachten Sie nur, dass das Löschen von Duplikaten zum Zeitpunkt des Anhängens eines neuen Eintrags an den Verlauf ausgelöst wird und dass alle alten Vorkommen eines Befehls gelöscht werden, wobei nur die neuesten übrig bleiben.


Beantwortung der Frage " Wie kann der Verlauf genau so sein, wie er ist, bevor ich mich abmelde? "

So wie ich das sehe, kann dies nur gelegentlich nützlich sein. (Warum sollten Sie sonst überhaupt den Verlauf verwenden?) Sie können dies durch Ausgabe tun

history -c; history -r

Dadurch werden alle aktuell im Speicher gespeicherten Verlaufseinträge gelöscht und der gesamte Verlauf erneut aus der Verlaufsdatei gelesen. Daher werden alle Befehle vergessen, die Sie seit der Anmeldung bei der aktuellen Shell-Sitzung ausgegeben haben. Ich finde es sehr nützlich in Situationen, in denen ich viele Tests durchführe (viele ähnliche Befehle, aber nicht wirklich Duplikate) und dann nicht möchte, dass meine Geschichte dadurch verfälscht wird - also habe ich einen Alias ​​dafür in meinem .bashrc:

alias hrr='history -c; history -r'

( hrrals "Geschichte neu lesen" zu erinnern).

rozcietrzewiacz
quelle