Como o Zsh controla o histórico de comandos?
Eu vejo dois arquivos no meu diretório pessoal: .zhistory
e .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)
zsh
command-history
Amelio Vazquez-Reina
fonte
fonte
~/.zshrc
e / ou as/etc/zshrc
opções descritas lá zsh.sourceforge.net/Guide/zshguide02.html#l17Respostas:
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~/.histfile
incorporado, portanto é isso que os usuários do zsh obtêm por padrão. Oh-my-zsh vem comHISTFILE=.zhistory
predefiniçã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.
append_history
(definida por padrão),inc_append_history
oushare_history
estiver definida, ou quando o histórico for salvo explicitamente comfc -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.
hist_save_by_copy
estiver 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.Em vez de apontar zsh para um link simbólico, defina
HISTFILE
para onde você quiser que o arquivo de histórico esteja.Quantas linhas do histórico são mantidas são configuradas pelas variáveis
HISTSIZE
eSAVEHIST
.HISTSIZE
é o número máximo de linhas que são mantidas em uma sessão eSAVEHIST
é 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
HISTFILE
eSAVEHIST
, como o valor padrãoSAVEHIST
é 0. Você também pode aumentarHISTSIZE
(a partir do zsh 5.0, o padrão é apenas 30).fonte