If I run
history , I can see my latest executed commands.
But if I do
tail -f $HISTFILE or
tail -f ~/.bash_history , they do not get listed.
Is the file locked in any temporary location?
The list of commands is stored in memory while bash is running They are written into
.bash_history on exit .
When an interactive shell exits, the last $HISTSIZE lines are copied from the history list to the file named by $HISTFILE
If you want to force the command history to be written out, you can use the
history -a command, which will.
Append the new history lines (history lines entered since the beginning of the current Bash session) to the history file.
There is also a
Write out the current history to the history file.
which may suit you more depending on exactly how you use your history.
If you want to make sure that they're always written immediately, you can put that command into your
export PROMPT_COMMAND='history -a'