これは、(mc を開始する前に) 次のコマンドで実行できます:
export PROMPT_COMMAND="history -a; history -r"
永続的にしたい場合は、 ~/.bashrc
に追加する必要があります .しかし、それはすべてのシェル履歴をグローバルにしますが、これは最善ではありません.この副作用が望ましくない場合は、上記の行の代わりに次の行を追加する必要があります:
alias mc='PROMPT_COMMAND="history -a; history -r" mc; history -r'
説明:
PROMPT_COMMAND
bash がプロンプトを表示する直前に実行されます。詳しくはこちらをご覧ください。
history
append パラメータで呼び出し、その後 read パラメータで呼び出す必要があります。詳しくはこちらをご覧ください。
何らかの理由で、PROMPT_COMMAND
mc
のソリューション ユーザー szkj によって提案されたエイリアスは、私にとっては正しく機能しませんでした。 MC サブシェルで実行されたコマンドは保存されていましたが、MC を開始する前に入力されたコマンドは終了後に失われていました。
最後に、 ~/.bashrc
で次を使用します 、 mc
なし エイリアス。 mc
という事実にもかかわらず、正常に動作しているようです $PROMPT_COMMAND
を上書きします .
export HISTCONTROL=ignoreboth
shopt -s histappend
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"
これは私が得たものです:
# 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
私のシステムは:
# 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