Histórico de comandos no zsh

27

Atualmente eu tenho o zsh configurado de tal forma que o histórico de comandos é compartilhado entre todas as sessões imediatamente.

Digamos que eu tenha um emulador de terminal aberto com duas guias, cada uma com uma sessão zsh, A1 e A2. Se eu inserir ls -la em A1, e depois ir para A2 e pressionar a tecla de seta para cima, eu verei ls -la no prompt de comando.

Eu gostaria de alterá-lo para que as sessões não compartilhem o histórico de comandos umas com as outras embora quando você inicia uma nova sessão, ele obtém todo o histórico anterior de todas as sessões anteriores.

    
por Art 11.04.2012 / 01:34

2 respostas

36

Você provavelmente tem INC_APPEND_HISTORY definido.

A opção INC_APPEND_HISTORY , de man zshoptions :

This options works like APPEND_HISTORY except that new history lines are added to the $HISTFILE incrementally (as soon as they are entered), rather than waiting until the shell exits.

A opção que você deseja é APPEND_HISTORY :

APPEND_HISTORY If this is set, zsh sessions will append their history list to the history file, rather than replace it. Thus, multiple parallel zsh sessions will all have the new entries from their history lists added to the history file, in the order that they exit. The file will still be periodically re-written to trim it when the number of lines grows 20% beyond the value specified by $SAVEHIST (see also the HIST SAVE BY COPY option).

Você pode ler sobre essas opções em man zshoptions , man zshall ou on-line .

Para configurá-los, no seu ~/.zshrc ou similar, você deve ter:

setopt APPEND_HISTORY

Esteja ciente de que, se você estiver usando oh-my-zsh por padrão, acredito, INC_APPEND_HISTORY é usado. Não tenho 100% de certeza de que maneira as coisas são carregadas, mas se a opção oh-my-zsh substituir a que você definiu em ~/.zshrc , você pode mexer com ela em ~/.oh-my-zsh/lib/history.zsh

    
por 14.04.2012 / 18:33
7

Para adicionar a resposta aceita, se você usar oh-my-zsh , provavelmente terá a opção SHARE_HISTORY ativada por padrão.

Para obter a separação entre os shells em execução + todo o histórico combinado em um terminal recém-aberto, é necessário comentar ou remover a seguinte linha:

setopt share_history # share command history data

de ~/.oh-my-zsh/lib/history.zsh

    
por 23.12.2015 / 11:14