Questo potrebbe essere fatto con il seguente comando (prima di avviare mc):
export PROMPT_COMMAND="history -a; history -r"
Se desideri renderlo permanente, dovresti aggiungerlo al tuo ~/.bashrc
. Ma renderà globale tutta la storia della shell, il che non è il massimo. Se non vuoi questo effetto collaterale, allora dovrebbe essere aggiunta la seguente riga invece di quella precedente:
alias mc='PROMPT_COMMAND="history -a; history -r" mc; history -r'
Spiegazione:
PROMPT_COMMAND
viene eseguito appena prima che bash visualizzi un prompt. Ulteriori letture qui.
history
dovrebbe essere chiamato con il parametro append e successivamente con il parametro read. Ulteriori letture qui.
Per qualche ragione, il PROMPT_COMMAND
soluzione in un mc
alias, come suggerito dall'utente szkj, non ha funzionato correttamente per me. Mentre preservava i comandi eseguiti nella subshell MC, i comandi immessi prima di avviare MC andavano persi dopo l'uscita.
Infine, utilizzo quanto segue in ~/.bashrc
, senza mc
alias. Sembra funzionare bene nonostante mc
sovrascrive $PROMPT_COMMAND
.
export HISTCONTROL=ignoreboth
shopt -s histappend
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"
Questo è quello che ottengo:
# 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
Il mio sistema è:
# 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