A origem da condição de corrida é porque o bash apenas grava o arquivo de histórico à medida que o shell é encerrado. Além disso, será gravado o arquivo de histórico existente se vários shells estiverem sendo executados, somente o último a sair dominará o histórico.
Portanto, uma solução é escrever o histórico depois de TODOS os comandos. Há ou algumas conseqüências negativas para isso, como, por exemplo, você poderá realizar eventos de histórico de seta ocorrendo em outras janelas e, portanto, expor a todos os shells abertos (que você possui) os comandos que você acabou de executar. O lugar mais provável para isso é se você estiver executando um conjunto repetitivo de comandos, como 'seta para cima N vezes, e pressione enter' repetidas vezes. Se, em uma janela fechada, um processo em segundo plano terminar, então, de repente, você precisará prestar mais atenção a que comando está realmente 'seta para cima N + 1 vezes' arriscando-se a executar o comando errado.
Para ativar "o histórico em cada comando", tente adicioná-los a você .bashrc (o número de linhas de histórico a serem armazenadas são apenas exemplos, você pode alterá-las para o seu conforto)
HISTFILESIZE=400000000
HISTSIZE=10000
PROMPT_COMMAND="history -a"
export HISTSIZE PROMPT_COMMAND
shopt -s histappend