Einige Instanzen von bash ändern den Befehlsverlauf, wenn Sie einen vorherigen Befehl wiederverwenden und bearbeiten, andere anscheinend nicht. Ich habe gesucht und gesucht, aber nichts gefunden, das besagt, wie verhindert werden kann, dass Befehle im Verlauf geändert werden, wenn sie wiederverwendet und bearbeitet werden.
Es gibt Fragen wie diese , aber das scheint zu sagen, wie man mit der Geschichte umgeht, die bearbeitet wird. Ich bin erst kürzlich auf eine Bash-Instanz gestoßen, die den Verlauf bearbeitet, wenn Sie einen Befehl wiederverwenden. Alle vorherigen Bash-Shells, die ich verwendet habe, wurden (soweit mir bekannt ist) so konfiguriert, dass sie den Verlauf nicht ändern, wenn Sie sie wiederverwenden und bearbeiten Sie einen Befehl. (Vielleicht habe ich in den letzten 15 Jahren meiner Shell-Geschichte einfach nicht genug Aufmerksamkeit geschenkt ...)
Das ist wahrscheinlich die beste Frage: KANN ich bash NIEMALS sagen, dass die Historie geändert werden soll - und wenn ja, wie?
set revert-all-at-newline on
Lösen die in der Frage, die Sie verlinken, nicht Ihr Problem? Können Sie zeigen, wie das Problem reproduziert werden kann? Beachten Sie, dass Sie auch zsh
für ein Verhalten verwenden können, das Ihren Vorstellungen entspricht.
history -p
ich mir die Manpage anschaue, muss ich das für jeden Befehl tun, den ich wiederverwenden möchte - stimmt das? Wenn ja, ist das nicht ganz das, wonach ich suche. Wie bereits erwähnt, habe ich Bash-Instanzen verwendet, die den Verlauf nicht ändern, wenn ein Befehl erneut verwendet und bearbeitet wird.
revert-all-at-newline
es genau das ist, was ich brauche. Wenn ich einen Befehl bearbeite und STRG-C drücke, um ihn abzubrechen, soll sich dies auch nicht auf den Verlauf auswirken. Ich musste Bash noch nie konfigurieren , um den Verlauf nicht zu ändern. Dies ist einer der Gründe, warum ich verwirrt bin, warum sich eine Neuinstallation manchmal auf die eine und manchmal auf die andere Weise verhält. Übrigens zeigt in einer Instanz, in der der Verlauf bei der Wiederverwendung von Befehlen nicht bearbeitet wird, a bind -V | grep revert
an, dass revert-all-at-newline
die Option deaktiviert ist.
bash
. Alles dreht sich um Readline. Es gibt verschiedene Implementierungen der readline
Bibliothek, und es hat auch einen eigenen Satz von Einstellungen (eine Menge von ihnen) und eine eigene Konfigurationsdatei. Ich bin mir nicht sicher, ob dies eine Einstellung oder einfach ein Implementierungsunterschied ist, aber Sie sollten in der readline-bezogenen Dokumentation suchen, nicht in der bash.
history -p
Sie Verlaufserweiterungen durchführen, ohne die Verlaufsdatei zu beeinflussen. Sie können dasselbehistory -s
tun und an den Verlauf anhängen, ohne ihn auszuführen. Sie könnenHISTIGNORE='start of a command I never want in history.*:command2.*'
bestimmte Befehle aus dem Verlauf entfernen.