Historique des commandes dans zsh


32

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

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 passe à A2 et appuie sur la touche flèche vers le haut, je vois ls -la dans l'invite de commande.

Je voudrais le changer pour que les sessions ne partagent pas l'historique des commandes entre elles, bien que lorsque vous démarrez une nouvelle session, il récupère tout l'historique précédent de toutes les sessions précédentes.


Je le fais régulièrement. Il y a cependant beaucoup de questions qui n'ont toujours pas de réponse satisfaisante.
Art

Grande question et réponses utiles. Je pensais que c'était une chose iTerm2 en particulier. Si tout va bien ce commentaire quelqu'un quelqu'un de cette façon s'ils font la même hypothèse.
Alan H.

Réponses:


40

Vous êtes probablement INC_APPEND_HISTORYprêt.

L' INC_APPEND_HISTORYoption, parmi man zshoptions:

Cette option fonctionne comme APPEND_HISTORY, sauf que de nouvelles lignes d'historique sont ajoutées au $ HISTFILE de manière incrémentielle (dès qu'elles sont entrées), plutôt que d'attendre la fin du shell.

L'option que vous souhaitez est APPEND_HISTORY:

APPEND_HISTORY Si cette option est définie, les sessions zsh ajouteront leur liste d'historique au fichier historique, plutôt que de la remplacer. Ainsi, plusieurs sessions zsh parallèles verront toutes les nouvelles entrées de leurs listes d'historique ajoutées au fichier d'historique, dans l'ordre de leur fermeture. Le fichier sera toujours réécrit périodiquement pour le rogner lorsque le nombre de lignes augmente de 20% au-delà de la valeur spécifiée par $ SAVEHIST (voir également l'option HIST SAVE BY COPY).

Vous pouvez lire sur ces options dans le man zshoptions, man zshallou en ligne ici .

Pour les définir, dans votre ~/.zshrcou similaire, vous devez avoir:

setopt APPEND_HISTORY

Sachez que, si vous utilisez oh-my-zsh par défaut, je crois, INC_APPEND_HISTORYest utilisé. Je ne suis pas sûr à 100% dans quel sens les choses sont chargées, mais si l' oh-my-zshoption remplace celle que vous avez définie ~/.zshrc, vous pouvez la manipuler dans~/.oh-my-zsh/lib/history.zsh


echo unsetopt INC_APPEND_HISTORY >~/.oh-my-zsh/custom/history.zsh
youfu

Comment iTerm2 peut-il être configuré pour restaurer l'historique individuel des onglets après un redémarrage (pour zsh et oh-my-zsh)?
Googol

10

Pour ajouter à la réponse acceptée, si vous utilisez oh-my-zsh, vous avez probablement l' SHARE_HISTORYoption activée par défaut.

Pour réaliser la 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


Dans mon cas, le chemin du fichier ~/.antigen/repos/https-COLON--SLASH--SLASH-github.com-SLASH-robbyrussell-SLASH-oh-my-zsh.git/lib/history.zsh
history.zsh

3
Une autre façon de procéder consiste à mettre unsetopt share_historyvotre .zshrcafter oh-my-zshest chargé. Documenté ici .
contre-

merci @counterbeing qui l'a corrigé pour moi - vous devriez en faire une réponse distincte, c'est le moyen le plus simple de le corriger
jcollum
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.