Prompt_command para recarregar a partir de .bash_history

5

Meu .bashrc contém o seguinte:

HISTSIZE=30000
PROMPT_COMMAND="history -a"
export HISTSIZE PROMPT_COMMAND

O que eu noto:

  • o .bash_history é adicionado.
  • O histórico de
  • em uma determinada sessão de terminal não inclui entradas anexadas de outras sessões de terminal

O comportamento desejado é ter o .bash_history recarregado após qualquer comando em qualquer terminal. Qual é o caminho para conseguir isso? Presumivelmente, seria uma modificação para o PROMPT_COMMAND ?

    
por javadba 21.12.2016 / 01:04

1 resposta

8

O comando history -a é anexado apenas ao arquivo de histórico. Isso não afeta nenhuma sessão de shell, a menos que você também leia a partir dela. Então, o que você está procurando é:

PROMPT_COMMAND="history -a; history -r"

Como explicado em help history :

  -r    read the history file and append the contents to the history
        list

Dessa forma, você primeiro anexará o histórico do seu shell atual a $HISTFILE e lerá dele, importando o histórico anexado de qualquer outra instância do shell para a atual.

Note que se você executar um comando em um terminal, ele não aparecerá no histórico de outro até que você execute um comando no segundo. O $PROMPT_COMMAND é executado antes que um prompt seja mostrado, portanto, se o segundo terminal estiver aberto e parado ali, ele não lerá o novo comando executado no primeiro até você executar algo no segundo e um novo prompt aparecer .

    
por 21.12.2016 / 10:59