Comment partagez-vous l'historique entre les terminaux dans zsh?

29

Comment peut-il être réalisé pour que chaque commande saisie soit visible dans l'historique de chaque terminal ouvert?

Lorsque plusieurs terminaux sont ouverts, l'historique n'est pas partagé, c'est-à-dire que ce que vous avez entré dans l'historique d'un terminal ne s'affiche pas dans un autre. Pensez à une alternative à Bash PROMPT_COMMAND="history -a"(qui enregistre l'historique avant l'affichage de l'invite).

MJB
la source
Voir aussi Q&A connexe et avancée: superuser.com/questions/446594/…
lumbric

Réponses:

36

Les options suivantes seraient applicables:

  • Pour enregistrer chaque commande avant son exécution (c'est différent de la solution history -a de bash):

    setopt inc_append_history
    
  • Pour lire le fichier d'historique à chaque fois, l'historique est appelé ainsi que les fonctionnalités de inc_append_history:

    setopt share_history
    

Ceux-ci peuvent être définis dans votre .zshrcfichier.

Associés à bash:

MJB
la source
4
"SHARE_HISTORY: cette option importe à la fois de nouvelles commandes à partir du fichier d'historique et entraîne également l'ajout de vos commandes tapées au fichier d'historique (ce dernier revient à spécifier INC_APPEND_HISTORY, qui doit être désactivé si cette option est en vigueur )." (À partir de l' accentuation manuelle ajoutée), c'est-à-dire que l'option INC_APPEND_HISTORY fera ce que vous voulez.
artfulrobot du
3
En fait, seule l'option SHARE_HISTORY fera à elle seule ce que vous voulez. La phrase "qui doit être désactivée si cette option est en vigueur" se traduit par "[INC_APPEND_HISTORY] doit être désactivée si l'option [SHARE_HISTORY] est en vigueur". J'ai testé cela sur zsh 5.1.1 sur Ubuntu Xenial.
Linus Arver
1
@opert est correct: setopt share_historyc'est ce qui permettra d'atteindre le résultat souhaité. @MJB seriez-vous prêt à modifier votre réponse pour supprimer la mention de setopt inc_append_history? Il obscurcit la réponse réelle.
bonh
Les noms ne sont pas sensibles à la casse et les soulignements sont ignorés, donc si voussetopt | grep histobtenezincappendhistoryetsharehistory.
Pablo A du
4

Si vous utilisez le génial OhMyZSH de Robby Russell, il s'en occupera et plus encore.

Voir https://github.com/robbyrussell/oh-my-zsh/blob/master/lib/history.zsh

Cela inclut setopt inc_append_history.

james_womack
la source
C'est la sienne. Important pour le travail en coquille.
Cees Timmerman
@CeesTimmerman corrigé, merci. C'est important pour la communication en général je crois. Qu'entendiez-vous par «Important pour le travail de shell»?
james_womack
1
Une faute de frappe dans le shell peut corrompre l'ensemble de votre système.
Cees Timmerman