GNU/Linux >> Linux の 問題 >  >> Linux

真夜中の司令官サブシェル - シェルとの履歴ファイルの共有 mc が開始された

これは、(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

Linux
  1. LinuxシェルからのSQLクエリを含むCSVファイルの読み取り

  2. コマンド ラインからファイルにテキストを追加する最も簡単な方法は何ですか?

  3. シェル スクリプトで Linux を使用してテンプレートを作成しますか?

  1. Linuxターミナルでリダイレクトを使用して、どこからでもデータを読み書きできます

  2. Zshの使用を開始する

  3. 「vi」のコマンドラインから行番号が表示されたファイルを開くにはどうすればよいですか?

  1. Linuxtacコマンドの使用を開始する

  2. lsの使用を開始する

  3. adb:adb シェルから PID を見つける