Cela peut être fait avec la commande suivante (avant de démarrer mc) :
export PROMPT_COMMAND="history -a; history -r"
Si vous souhaitez le rendre permanent, vous devez l'ajouter à votre ~/.bashrc
. Mais cela rendra toute l'histoire du shell globale, ce qui n'est pas le meilleur. Si vous ne voulez pas cet effet secondaire, alors la ligne suivante doit être ajoutée à la place de celle ci-dessus :
alias mc='PROMPT_COMMAND="history -a; history -r" mc; history -r'
Explication :
PROMPT_COMMAND
est exécuté juste avant que bash affiche une invite. Pour en savoir plus, cliquez ici.
history
doit être appelé avec le paramètre append, puis avec le paramètre read. Pour en savoir plus, cliquez ici.
Pour une raison quelconque, le PROMPT_COMMAND
solution dans un mc
alias, comme suggéré par l'utilisateur szkj, ne fonctionnait pas correctement pour moi. Bien qu'il ait conservé les commandes exécutées dans le sous-shell MC, les commandes saisies avant le démarrage de MC ont été perdues après la fermeture.
Enfin, j'utilise ce qui suit dans ~/.bashrc
, sans mc
alias. Cela semble bien fonctionner malgré le fait que mc
écrase $PROMPT_COMMAND
.
export HISTCONTROL=ignoreboth
shopt -s histappend
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"
Voici ce que j'obtiens :
# echo "1: before starting MC. PROMPT_COMMAND=$PROMPT_COMMAND"
1: before starting MC. PROMPT_COMMAND=history -a; history -c; history -r;
# mc
# echo "2: Inside MC. PROMPT_COMMAND=$PROMPT_COMMAND"
2: Inside MC. PROMPT_COMMAND=pwd>&8;kill -STOP $$
# history | tail -3
3038 echo "1: before starting MC. PROMPT_COMMAND=$PROMPT_COMMAND"
3039 echo "2: Inside MC. PROMPT_COMMAND=$PROMPT_COMMAND"
3040 history | tail -3
# echo "3: Going to exit MC with F10."
3: Going to exit MC with F10.
# echo "4: Back in Bash after MC"
4: Back in Bash after MC
# history | tail -7
3038 echo "1: before starting MC. PROMPT_COMMAND=$PROMPT_COMMAND"
3039 echo "2: Inside MC. PROMPT_COMMAND=$PROMPT_COMMAND"
3040 history | tail -3
3041 echo "3: Going to exit MC with F10."
3042 mc
3043 echo "4: Back in Bash after MC"
3044 history | tail -7
Mon système est :
# cat /etc/debian_version
8.1
# bash --version | head -1
GNU bash, version 4.3.30(1)-release (x86_64-pc-linux-gnu)
# mc --version | head -1
GNU Midnight Commander 4.8.13
# uname -a
Linux afnet 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u3 (2015-08-04) x86_64 GNU/Linux