47 votes

Historique des commandes dans zsh

Actuellement, j'ai configuré zsh de manière à ce que l'historique des commandes soit immédiatement partagé entre toutes les sessions.

Disons que j'ai un émulateur de terminal ouvert avec deux onglets, chacun avec une session zsh, A1 et A2. Si j'entre ls -la dans A1, puis allez dans A2 et appuyez sur la touche fléchée vers le haut, je verrai ls -la dans l'invite de commande.

J'aimerais le modifier pour que les sessions ne partagent pas l'historique des commandes entre elles. bien que lorsque vous démarrez une nouvelle session, l'historique de toutes les sessions précédentes est récupéré.

54voto

John V. Points 23

Vous avez probablement INC_APPEND_HISTORY set.

En INC_APPEND_HISTORY de l'option man zshoptions :

Cette option fonctionne comme APPEND_HISTORY sauf que de nouvelles lignes d'historique sont ajoutées. au $HISTFILE de manière incrémentale (dès qu'elles sont saisies), plutôt que d'attendre que le jusqu'à ce que le Shell se termine.

L'option souhaitée est la suivante APPEND_HISTORY :

A Si cette option est activée, les sessions zsh ajouteront leur liste d'historique au fichier d'historique, plutôt que de la remplacer. plutôt que de la remplacer. Ainsi, plusieurs sessions zsh parallèles auront toutes les nouvelles entrées de leur liste d'historique ajoutées au fichier d'historique, dans l'ordre où elles quittent la session. Le fichier sera périodiquement réécrit pour l'alléger lorsque le nombre de lignes dépasse de 20% au-delà de la valeur spécifiée par $SAVEHIST (voir aussi l'option HIST SAVE BY COPY ).

Pour en savoir plus sur ces options, consultez la rubrique man zshoptions , man zshall ou en ligne aquí .

Pour les définir, dans votre ~/.zshrc ou similaire, vous devriez avoir :

setopt APPEND_HISTORY

Sachez que, si vous utilisez oh-my-zsh par défaut, je crois, INC_APPEND_HISTORY est utilisé. Je ne suis pas sûr à 100 % de la façon dont les choses sont chargées, mais si le fichier oh-my-zsh remplace celle que vous avez définie dans l'option ~/.zshrc Vous pouvez le modifier dans ~/.oh-my-zsh/lib/history.zsh

18voto

Adam Zielinski Points 281

Pour compléter la réponse acceptée, si vous utilisez oh-my-zsh , vous avez probablement SHARE_HISTORY est activée par défaut.

Pour obtenir une séparation entre les shells en cours d'exécution + l'historique complet combiné dans un terminal nouvellement ouvert, vous devez commenter ou supprimer la ligne suivante :

setopt share_history # share command history data

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X