Como você compartilha o histórico entre os terminais no zsh?

29

Como isso pode ser alcançado para que todo comando inserido seja visível no histórico de todos os terminais abertos?

Ao ter vários terminais abertos, o histórico não é compartilhado, ou seja, o que você inseriu no histórico de um terminal não aparece em outro. Pense em uma alternativa ao Bash PROMPT_COMMAND="history -a"(que salva o histórico antes que o prompt seja exibido).

MJB
fonte
Consulte também as perguntas e respostas relacionadas e avançadas: superuser.com/questions/446594/…
lumbric

Respostas:

36

As seguintes opções seriam aplicáveis:

  • Para salvar todos os comandos antes de serem executados (isso é diferente do histórico do bash - uma solução):

    setopt inc_append_history
    
  • Para ler o arquivo histórico sempre que o histórico for chamado, bem como a funcionalidade de inc_append_history:

    setopt share_history
    

Estes podem ser definidos no seu .zshrcarquivo.

Relacionado para o bash:

MJB
fonte
4
"SHARE_HISTORY: Esta opção importa novos comandos do arquivo de histórico e também faz com que seus comandos digitados sejam anexados ao arquivo de histórico (o último é como especificar INC_APPEND_HISTORY, que deve ser desativado se esta opção estiver em vigor )." (A partir da ênfase manual adicionada), ou seja, apenas a opção INC_APPEND_HISTORY fará o que você deseja.
Artfulrobot
3
Na verdade, apenas a opção SHARE_HISTORY fará o que você quiser. A frase "que deve ser desativada se esta opção estiver em vigor" se traduz em "[INC_APPEND_HISTORY] deve ser desativada se a opção [SHARE_HISTORY] estiver em vigor". Eu testei isso no zsh 5.1.1 no Ubuntu Xenial.
Linus Arver 02/02
11
@ opert está correto: setopt share_historyé o que alcançará o resultado desejado. @MJB você gostaria de editar sua resposta para remover a menção de setopt inc_append_history? Oculta a resposta real.
bonh
Os nomes não diferenciam maiúsculas de minúsculas e os sublinhados são ignorados, portanto, se vocêsetopt | grep histobterincappendhistoryesharehistory.
Pablo A em
4

Se você usar o incrível OhMyZSH de Robby Russell, ele cuidará disso e muito mais.

Consulte https://github.com/robbyrussell/oh-my-zsh/blob/master/lib/history.zsh

Isso inclui setopt inc_append_history.

james_womack
fonte
É dele / dela / dela. Importante para o trabalho de shell.
Cees Timmerman
@CeesTimmerman corrigido, obrigado. É importante para a comunicação em geral, acredito. O que você quis dizer com "Importante para o trabalho de shell"?
james_womack
11
Um erro de digitação no shell pode corromper todo o seu sistema.
precisa