Histórico de comandos no Zsh


61

Como o Zsh controla o histórico de comandos?

Eu vejo dois arquivos no meu diretório pessoal: .zhistorye .zsh_history. Qual a diferença entre eles? Os arquivos parecem conter todo o meu histórico. O Zsh mantém anexando linhas a um deles para sempre ? Isso não tornaria a pesquisa de histórico muito lenta?

Posso tornar esses arquivos links simbólicos com segurança para outro local? (por exemplo, um repositório git para acompanhar as alterações no histórico)


Verifique seu ~/.zshrce / ou as /etc/zshrcopções descritas lá zsh.sourceforge.net/Guide/zshguide02.html#l17
UVV

Respostas:


78

O Zsh armazena linhas de entrada (possivelmente com informações de tempo) no arquivo indicado pela variável HISTFILE. Esse deve ser um nome de arquivo absoluto (caso contrário, será interpretado em relação a qualquer diretório atual no momento).

O Zsh não possui um valor padrão interno para HISTFILE. A distribuição zsh vem com um assistente de configuração para novos usuários com o valor ~/.histfileincorporado, portanto é isso que os usuários do zsh obtêm por padrão. Oh-my-zsh vem com HISTFILE=.zhistorypredefinição. Parece que você tentou o zsh com a configuração padrão e com o oh-my-zsh. Verifique sua .zshrc(ou as datas do arquivo) para ver qual delas você está usando no momento.

Como o zsh abre o arquivo e, portanto, o que acontece se for um link simbólico, depende de várias opções.

  • Se uma das opções append_history(definida por padrão), inc_append_historyou share_historyestiver definida, ou quando o histórico for salvo explicitamente com fc -AI, o zsh será anexado ao arquivo existente.
    Observe que, mesmo nessas configurações, o zsh substitui o arquivo ocasionalmente, conforme descrito abaixo, para reduzi-lo ao tamanho.
  • Caso contrário, se a opção hist_save_by_copyestiver configurada (por padrão, desde o zsh 5.0, mas não existe no 4.2), o zsh grava um arquivo temporário e o move quando estiver completo. Nesse caso, se o arquivo de histórico for um link simbólico, o novo arquivo substituirá o link simbólico.
  • Caso contrário, o zsh substituirá o arquivo existente no local.

Em vez de apontar zsh para um link simbólico, defina HISTFILEpara onde você quiser que o arquivo de histórico esteja.

Quantas linhas do histórico são mantidas são configuradas pelas variáveis HISTSIZEe SAVEHIST. HISTSIZEé o número máximo de linhas que são mantidas em uma sessão e SAVEHISTé o número máximo de linhas que são mantidas no arquivo de histórico.

Para salvar algum histórico, você precisa definir ambos HISTFILEe SAVEHIST, como o valor padrão SAVEHISTé 0. Você também pode aumentar HISTSIZE(a partir do zsh 5.0, o padrão é apenas 30).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.