For a long time I have been wondering when zsh actually persist its history. Or rather, why I can’t recover the previous command I just typed in one shell in another shell, directly after. A colleague suggested its written when a session ends, which turns out to be correct.
Something about this always felt off for me, but I never bother looking into it.
Today I discovered share_history
, append_history
and inc_append_history
. It seems I have had append_history
in my .zshrc
for a long time.. Indeed, it appends history to make them available in other shells, but only once a shell is exited. And its only read in newly spawned shells. append_history
appends to the history file, instead of replacing it as shells exists (in the order of the exited shells).
inc_append_history
on the other hand, incrementally appends history as commands are finished in the current session. The written history is still only read on newly spawned shells. share_history
is like setting inc_append_history
, only it also reads the history on each command.
I usually hit m-p
or m-n
to skip through the partially matching history items anyways, using the zsh-history-substring-search
plugin’s history-substring-search-up
and history-substring-search-down
, so I don’t really notice the added noise of repeated or unwanted commands that is now be shared.
Feels much more natural.