Você já mencionou o espaço principal e outra resposta mencionou configurações que <\> <\> alterarão intencionalmente o que foi salvo no histórico, como a configuração HISTIGNORE
e simplesmente desativando o histórico .
Outro cenário é vários shells interativos executados pelo mesmo usuário. O shell Z possui uma opção share_history
que possibilita que mais de uma instância do shell Z atualize um arquivo de histórico compartilhado. Ele relê o arquivo procurando novas entradas e aplica registros de data e hora a cada entrada.
O shell Bourne Again não tem este built-in (embora isso possa tipo de fazê-lo usando shenanighans para executar comandos quando o prompt é impresso). O comportamento do arquivo de histórico padrão que isso está alterando é que nenhum shell espera que algo diferente de si mesmo esteja gravando no arquivo de histórico e não atualiza o histórico após cada linha de comando executada.
O comportamento padrão no shell Bourne Again, especificamente, apenas atualiza o arquivo de histórico quando o shell sai ou um explicitamente diz para ele com o comando history
. Isso significa que não apenas um shell simplesmente sobrescreverá o histórico gravado por outro quando um usuário tiver várias sessões de shell interativas; mas também que é possível que um shell que não seja terminado cleanly não grave o arquivo de histórico e, portanto, perca o histórico de comando que ocorreu entre o shell ser terminado de forma não limpa e sua última atualização (explícita) o arquivo de histórico.