On Wed, 12 Apr 2023 10:39:44 +0200
Vít Ondruch <vondruch(a)redhat.com> wrote:
Dne 11. 04. 23 v 18:02 stan via devel napsal(a):
>
> I have the following defined in .bashrc:
>
> # this logs the history explicitly before exiting a shell
> hx ()
> {
> history -a;
> exit;
> }
>
> It means that I have to exit using the command hx when closing a
> terminal.
What about using `~/.bash_logout` to avoid the need of `hx`?
I had to do some research to even understand what you were asking.
With that caveat, it seems that a .bash_logout only executes on login
shells. So, it would not save the history of terminals in X when they
were closed. Am I misunderstanding?
I did find something that might work in that case, at this link.
https://superuser.com/questions/410525/explain-why-bash-logout-wont-run-c...
"""
~/.bash_logout is only run if it you explicitly exit the shell with
exit or logout, or by typing Control-D to enter an end-of-file at the
command prompt. If you close the terminal emulator, processes are sent
SIGHUP, and bash doesn’t run ~/.bash_logout in that case.
If you want to perform work any time bash exits (and whether it’s a
login shell or not), use trap foo EXIT. The most convenient way to do
this is to put your code in a shell function, e.g.,:
print_goodbye () { echo Goodbye; }
trap print_goodbye EXIT
"""
Typing exit or logout is more keystrokes than hx, so .bash_logout is not
really compelling. The trap looks promising, I assume that I would put
save_history_on_exit () {history -a;}
trap save_history_on_exit EXIT
in .bashrc. Basically, running a .bash_logout in a different way.
Thanks.