o histórico não é preservado no zsh

5

Sempre que eu abro uma nova instância de um terminal, o histórico está vazio. Por que é que? Preciso arrumar alguma coisa? No bash, não há necessidade disso.

    
por Gilles 01.09.2017 / 23:51

2 respostas

5

Bash e zsh têm padrões diferentes. Zsh não salva o histórico em um arquivo por padrão.

Quando você executa zsh sem um arquivo de configuração, ele exibe uma interface de configuração. Nesta interface de configuração, selecione

(1)  Configure settings for history, i.e. command lines remembered
     and saved by the shell.  (Recommended.)

analise as configurações propostas e selecione

# (0)  Remember edits and return to main menu (does not save file yet)

Repita para os outros submenus para conclusão (2), (3) atalhos de teclado e (4) opções, depois selecione

(0)  Exit, saving the new settings.  They will take effect immediately.

no menu principal.

As configurações relacionadas ao histórico recomendadas são

HISTFILE=~/.histfile
HISTSIZE=1000
SAVEHIST=1000
setopt appendhistory

Eu usaria um nome diferente para o arquivo de histórico, para indicar o arquivo de histórico do zsh. E 1000 linhas podem ser aumentadas em um sistema moderno.

HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
setopt appendhistory

Essas linhas vão para ~/.zshrc , a propósito.

    
por 02.09.2017 / 00:36
1

Embora a resposta existente esteja correta, achei que poderia valer a pena acrescentar que há possivelmente uma opção melhor do que appendhistory para salvar seu histórico e isso é SHARE_HISTORY .

A partir dos docs SHARE_HISTORY "ambos importam novos comandos do arquivo de histórico e também fazem com que seus comandos digitados sejam anexados ao arquivo de histórico". Isso significa que os shells estão cientes da história um do outro, sem ter que fechar o atual ou abrir um novo.

Então, todos juntos, você configuraria assim:

HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=1000
setopt SHARE_HISTORY
    
por 22.09.2018 / 14:44