Is it possible that history is only being recorded from one bash instance?
Isso é o tipo de coisa que está acontecendo. A maneira como o history funciona no bash, a menos que você tenha feito alguns ajustes para alterá-lo, é:
- Quando o bash é iniciado, ele carrega o histórico salvo do arquivo de histórico.
- Cada vez que um comando é executado, ele é adicionado ao histórico na memória de bash.
- Quando o bash sai, ele salva o histórico acumulado no arquivo de histórico.
Agora, suponha que você inicie duas instâncias do bash. Ambos carregam o arquivo de histórico quando iniciam. Ambos adicionam os comandos que eles executam ao seu próprio histórico. Quando uma instância sai, ela salva o histórico antigo mais seus próprios comandos no arquivo de histórico. Quando a segunda instância sai, ela salvou o histórico antigo mais o próprio seu comando no arquivo histórico - e, ao fazer isso, limpa o histórico da primeira instância que saiu.
O mecanismo de economia de histórico do Bash é excessivamente simplista. Suas linhas de histórico estão à mercê de todas as outras instâncias em execução - a última saída limpa a história dos outros. As soluções incluem acrescentar o novo histórico ao arquivo de histórico em vez de sobrescrever o arquivo de histórico com todo o histórico da memória ou anexar linhas ao arquivo de histórico assim que elas forem executadas. Veja Preserve o histórico bash em várias janelas de terminal e Preserve o histórico bash em várias janelas de terminal para algumas formas de implementar este e outros variantes.
A solução mais simples é executar o zsh, que salva o histórico de maneira sã por padrão. Eu recomendo isso, especialmente desde que você está executando o macOS, que está preso em uma versão antiga do bash porque a Apple não gosta da licença de versões lançadas desde 2009.