Comment Zsh garde-t-il une trace de l'historique des commandes?
Je vois deux fichiers dans mon répertoire personnel: .zhistory
et .zsh_history
. Quelle est la différence entre eux? Les fichiers semblent contenir toute mon histoire. Zsh continue-t-il d'ajouter des lignes à l'une d'elles pour toujours ? Cela ne rendrait-il pas la recherche d'histoire trop lente?
Puis-je créer en toute sécurité ces fichiers des liens symboliques vers un autre emplacement? (par exemple, un dépôt git pour garder trace des modifications apportées à l'historique)
zsh
command-history
Amelio Vazquez-Reina
la source
la source
~/.zshrc
et / ou les/etc/zshrc
options décrites ici zsh.sourceforge.net/Guide/zshguide02.html#l17Réponses:
Zsh stocke les lignes d'entrée (éventuellement avec des informations temporelles) dans le fichier indiqué par la variable
HISTFILE
. Cela devrait être un nom de fichier absolu (sinon, il sera interprété en fonction du répertoire en cours à ce moment-là).Zsh n'a pas de valeur par défaut intégrée pour
HISTFILE
. La distribution zsh est fournie avec un assistant de configuration pour les nouveaux utilisateurs, qui a la valeur~/.histfile
intégrée. C'est donc ce que les utilisateurs de zsh obtiennent par défaut. Oh-my-zsh est livré avec unHISTFILE=.zhistory
préréglage. On dirait que vous avez essayé zsh avec la configuration par défaut et avec oh-my-zsh. Vérifiez votre.zshrc
(ou les dates du fichier) pour voir celui que vous utilisez actuellement.Comment zsh ouvre le fichier, et donc ce qui se passe s’il s’agit d’un lien symbolique, dépend de plusieurs options.
append_history
(définie par défaut),inc_append_history
oushare_history
est définie, ou si l'historique est explicitement enregistré avecfc -AI
, zsh est ajouté au fichier existant.Notez que même avec ces paramètres, zsh écrase parfois le fichier comme décrit ci-dessous pour le réduire.
hist_save_by_copy
est définie (elle est définie par défaut depuis zsh 5.0, mais n'existe pas dans la version 4.2), zsh écrit un fichier temporaire puis le déplace en place une fois l'opération terminée. Dans ce cas, si le fichier d'historique était un lien symbolique, le nouveau fichier remplace le lien symbolique.Plutôt que de pointer zsh sur un lien symbolique, définissez-le
HISTFILE
à l'emplacement souhaité pour le fichier d'historique.Le nombre de lignes d’historique conservées est configuré via les variables
HISTSIZE
etSAVEHIST
.HISTSIZE
correspond au nombre maximal de lignes conservées dans une session etSAVEHIST
au nombre maximal de lignes conservées dans le fichier historique.Pour que l’historique soit sauvegardé, vous devez définir les deux
HISTFILE
etSAVEHIST
, la valeur par défautSAVEHIST
étant 0. Vous pouvez également vouloir augmenterHISTSIZE
(à partir de zsh 5.0, la valeur par défaut n’est que de 30).la source