Historique de search à partir de plusieurs sessions bash uniquement lorsque Ctrl + R est utilisé, pas lorsque les touches fléchées sont utilisées

J'ai généralement plusieurs sessions de bash ouvertes. Je veux que l'historique de plusieurs sessions apparaisse lors d'une search (avec Ctrl + R). Lorsque les touches fléchées sont utilisées, seul l'historique de la session bash actuelle doit apparaître.

De nombreuses questions stackexchange concernent le stockage de l'historique à partir de plusieurs sessions. Je l'utilise déjà mais mon besoin est peu différent.

Tout d'abord, il n'y a pas une solution propre à votre problème sans réimplémenter une composante key de la façon dont le shell (bash dans ce cas) traite de l'histoire. Voici une solution qui maintient votre historique local pour que les flèches fonctionnent comme prévu. Ctrl-r à son tour est lié à la search de votre histoire globale. La solution dépend d'un excellent utilitaire pour searchr dans votre histoire appelée hh . Voici les instructions pour tout mettre en place.

Ajoutez à un file de démarrage soit ~/.profile , ~/.bash_profile ou ~/.bashrc :

 # Whenever a command is executed, write it to a global history export PROMPT_COMMAND="history -a ~/.bash_history.global" # On Cr run the swap_history_reverse.sh script, bind -x '"\Cr": "~/swap_history_reverse.sh"' 

Créez le script suivant ~/swap_history_reverse.sh :

 #! /usr/bin/env bash # Point hh to global history export HISTFILE=~/.bash_history.global # Reverse search hh # Restore local history export HISTFILE=~/.bash_history 

Rendre le script exécutable:

 chmod +x ~/swap_history_reverse.sh 

Installez hh , voir INSTALLER .

Une fois que tout est en place, ouvrez une nouvelle coquille et lancez-la.