Eu gosto de salvar todo histórico no bash em uma espécie de arquivo de log e criei um diretório extra ~/lib/hists/ para esse propósito.
Escrever tal arquivo de log no shell é fácil:
history -w /home/stefan/lib/hists/bash-hist-$(date +%F_%T_%N)
Agora, se eu desligar, todos os xterms de fechamento devem gravar seu arquivo de log, e é por isso que incluo o nanotime no nome do arquivo, para evitar colisão.
Então eu coloquei esse comando em ~/.bash_logout
Infelizmente, fechar um xterm não gerou esse arquivo de log. Pensei, talvez porque seja porque fechei a janela. Então comece o bash no bash:
bash
ls
exit
mas, novamente, nenhuma história escrita.
Na maioria das vezes, tenho de 4 a 6 terminais abertos, mas apenas um arquivo de histórico para o qual não sei, quais comandos estão terminando ali - do primeiro shell aberto, do último shell fechado? Durante o trabalho, os históricos não interferem, então acho que está vinculado apenas a uma instância do shell.
Estou interessado em explicações, por que minha abordagem falha, como posso corrigi-la, incluindo abordagens muito diferentes.
O Bash executará os comandos
.bash_logout
apenas se o shell for um shell de login.Consulte esta resposta em superuser.com para obter mais detalhes, juntamente com uma solução alternativa para o problema que você está tentando resolver.