subpainha do comando da meia-noite - o compartilhamento de um arquivo de histórico com o shell mc foi iniciado a partir de

4

Estou procurando uma maneira de fazer com que midnight commander compartilhe seu histórico de subshell com o shell pai. Para ser mais específico, quando eu inicio mc , abro seu subshell usando Control + o e subseqüentemente invoco um comando no subshell, este comando não está disponível no sub histórico do shell após sair de mc . Existe uma maneira de compartilhar a história entre as duas conchas? Eu começo mc de bash , se isso for relevante. Obrigado.

    
por AtomHeartFather 27.11.2014 / 12:43

2 respostas

5

Isso pode ser feito com o seguinte comando (antes de iniciar o mc):

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

Se você quiser torná-lo permanente, adicione-o ao seu ~/.bashrc . Mas isso tornará todo o histórico de shell global, o que não é o melhor. Se você não quiser esse efeito colateral, a seguinte linha deve ser adicionada em vez da acima:

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

Explicação:

PROMPT_COMMAND é executado antes do bash exibir um prompt. Outras leituras aqui .

history deve ser chamado com o parâmetro append e depois disso com o parâmetro read. Outras leituras aqui .

    
por 05.02.2015 / 22:54
1

Por algum motivo, a solução PROMPT_COMMAND em um mc alias, como sugerido pelo usuário szkj, não funcionou corretamente para mim. Embora tenha preservado os comandos executados no subnível MC, os comandos inseridos antes de iniciar o MC foram perdidos após a saída.

Por fim, uso o seguinte em ~/.bashrc , sem um mc alias. Parece funcionar bem, apesar do fato de que mc sobrescreve $PROMPT_COMMAND .

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

Isso é o que eu recebo:

# 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

Meu 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
    
por 27.03.2016 / 14:16