
Ich kann den exit
Befehl aus einem gnome-terminal
Fenster mit dem Bash- trap
Befehl abfangen, aber das funktioniert nur, wenn der Benutzer exit
im Terminalfenster eingibt. Wenn der Benutzer stattdessen auf die Schaltfläche „Schließen“ klickt, wird der Trap-Exit-Handler nicht ausgeführt.
Hintergrundinformation:
Ich möchte den Bash-Verlauf in einer benutzerdefinierten Verlaufsdatei speichern, wenn der Benutzer auf die Schaltfläche „Schließen“ klickt. Ich habe verwendet export HISTFILE=/tmp/custom.hist
, dies funktioniert in vielen Fällen (wenn der Benutzer im Gnome-Terminal auf die Schaltfläche „Schließen“ klickt, wird der Verlauf in der angegebenen Datei gespeichert), aber in einigen Fällen wird der Verlauf nicht gespeichert, daher suche ich nach Alternativen zum Festlegen der HISTFILE
Umgebungsvariable.
Antwort1
Sie möchten SIGHUP abfangen;
Aus man 7 signal
:
SIGHUP 1 Term Hangup detected on controlling terminal or death of controlling process
Um sowohl SIGHUP als auch EXIT abzufangen:
trap 'export HISTFILE=/tmp/custom.hist' 1 EXIT
oder:
trap 'export HISTFILE=/tmp/custom.hist' SIGHUP EXIT
Antwort2
Sie könnten die Verlaufsdatei nach jedem Befehl speichern. Dieser Trick wird normalerweise verwendet, um den Verlauf für mehrere Fenster zu synchronisieren, würde aber in Ihrem Fall funktionieren. Siehe zum Beispiel:diese Antwort