Compartilhar histórico em vários shell zsh

0

Estou tentando configurar zsh para que ele compartilhe o histórico de comandos entre diferentes zsh sessions:

  • em várias guias
  • em vários terminais do gnome
  • em diferentes screen sessions

Eu coloquei isso em .zshrc

#To save every command before it is executed (this is different from bash's history -a solution):
setopt inc_append_history

#To retrieve the history file everytime history is called upon.
setopt share_history

mas isso não funciona.

por exemplo. Eu digito 1 comando: gedit afile e então eu vou para e zsh e digito history . Eu não vejo gedit afile .

saída de 'setopt' é

 % setopt
nohistbeep
histexpiredupsfirst
histfindnodups
histignorealldups
histignoredups
histignorespace
histnostore
histreduceblanks
histsavenodups
histverify
incappendhistory
interactive
monitor
promptsubst
sharehistory
shinstdin
zle

Como posso conseguir isso?

    
por michael 15.12.2012 / 01:34

2 respostas

0

A resposta simples para a sua pergunta é você precisa definir share_history , você faz isso com:

setopt share_history

Desde que você obviamente já fez isso (e essa opção realmente funciona). Eu sugiro que você verifique:

  • se os ambos shells têm a opção definida;
  • se você não está digitando comandos com um espaço à esquerda (pois histignorespace faz com que eles sejam ignorados)
  • Você tem $HISTFILE definido para o mesmo valor em todos os shells?
  • se você está realmente salvando algum histórico? Diga, se você emitir echo 123 na guia-1. Vá para a guia 2, chame history . Está lá? (como por seu problema, não). Agora emita, fc -R (significa reler o arquivo do histórico) e, em seguida, history está lá agora? Se não, você também pode querer chamar fc -A ( -A irá anexar o seu histórico ao arquivo) na tab-1 para ter certeza de que o histórico está escrito no arquivo.
por 19.12.2012 / 11:22
5

tente pesquisar após pressionando enter .

o que testei foi:

  • abre 2 shells de zsh
  • vá para o shell 1 do zsh e execute echo "something"
  • vá para zsh shell 2, pressione enter e verifique se você vê o comando do shell 1.

no meu caso eu vou não ver o comando até eu pressionar enter .

    
por 21.03.2015 / 03:00

Tags