Como sincronizar o histórico de comandos da sessão do terminal no bash?

8

eu tenho  tentei pesquisar em ~/.bash_history para meus comandos recentes enquanto sessão terminal, mas eles simplesmente não estavam lá. Eu acho que isso é porque eu tem várias sessões de terminal abertas.

Existe uma maneira que eu possa sincronizar (por exemplo, sync-push ou sync-write-out) histórico de comandos da sessão de terminal atual no arquivo bash_history (sem fechar a sessão e perder esse ambiente)?

(Seria remotamente semelhante à ideia de como o comando sync armazena as modificações do sistema de arquivos em alguns sistemas.)

Eu imagino que poderia configurar o bash para preservar o histórico de várias sessões, mas a capacidade de empurrar o buffer de histórico atual ainda seria útil em cenários quando você está trabalhando em uma nova máquina e você acidentalmente esqueci de configurar o bash do jeito que você poderia querer.

    
por n611x007 22.05.2014 / 13:21

1 resposta

14

Adicione esta linha a .bashrc :

export PROMPT_COMMAND="history -a; history -n"

Abra um novo terminal e verifique.

Explicação

  • history -a acrescenta novas linhas de histórico ao arquivo de histórico.
  • history -n diz bash para ler as linhas que não são lidas do arquivo de histórico para a lista de histórico atual da sessão.
  • PROMPT_COMMAND : o conteúdo dessa variável é executado como um comando normal antes de bash show prompt. Assim, toda vez que você executar um comando, history -a; history -n será executado e seu histórico de bash será sincronizado.
por 22.05.2014 / 13:33