GNU/Linux >> Znalost Linux >  >> Linux

půlnoční commander subshell - sdílení souboru historie se shellem mc bylo zahájeno

To lze provést pomocí následujícího příkazu (před spuštěním mc):

export PROMPT_COMMAND="history -a; history -r"

Pokud chcete, aby byla trvalá, měli byste ji přidat do ~/.bashrc . Ale to udělá celou historii shellu globální, což není nejlepší. Pokud si tento vedlejší efekt nepřejete, měl by být přidán následující řádek namísto výše uvedeného:

alias mc='PROMPT_COMMAND="history -a; history -r" mc; history -r'

Vysvětlení:

PROMPT_COMMAND se provede těsně předtím, než bash zobrazí výzvu. Další čtení zde.

history by měl být volán s parametrem append a poté s parametrem read. Další čtení zde.


Z nějakého důvodu PROMPT_COMMAND řešení v mc alias, jak navrhl uživatel szkj, mi nefungoval správně. I když to zachovalo příkazy provedené v subshell MC, příkazy zadané před spuštěním MC byly po ukončení ztraceny.

Nakonec v ~/.bashrc používám následující bez mc alias. Zdá se, že funguje dobře navzdory skutečnosti, že mc přepíše $PROMPT_COMMAND .

export HISTCONTROL=ignoreboth
shopt -s histappend
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"

Dostávám toto:

# 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

Můj systém je:

# 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. Počítejte v linuxovém shellu s GNU bc

  2. Čtěte a zapisujte data odkudkoli s přesměrováním v terminálu Linux

  3. Začínáme se Zsh

  1. Začínáme s příkazem tac systému Linux

  2. Začínáme s ls

  3. Archivovat historii bez opuštění Shell?

  1. Najít N nejfrekventovanějších slov v souboru se seznamem stop slov z příkazového řádku?

  2. adb:Najděte PID z prostředí adb

  3. Proč se vypnutí net rpc nezdaří se správnými přihlašovacími údaji?