Quando e como o bash_history é anexado?

6

Até onde eu sei, o histórico de um shell individual é anexado somente ao arquivo .bash_history quando o shell é fechado. Isso significa que eu freqüentemente perco históricos de shells individuais em panes / kernel panics.

Por que o histórico só é escrito ao fechar uma sessão? Existe uma maneira de ter cada comando escrito no momento da execução? Existe algum motivo para eu não querer ter cada comando escrito no momento da execução (por exemplo, problemas de desempenho ao gravar em um arquivo bash_history enorme)?

(Estou usando o Mac OS X 10.6 e executando muitos terminais com guias simultaneamente com o iTerm. Tenho o histappend configurado junto com algumas outras opções.

export HISTSIZE=1000000
export HISTTIMEFORMAT="%d/%m/%y %T "
shopt -s histappend

    
por keflavich 01.12.2011 / 01:30

1 resposta

4

Você está perdendo uma linha no seu .bashrc. Adicione:

PROMPT_COMMAND="$PROMPT_COMMAND;history -a"

depois

shopt -s histappend

PROMPT_COMMAND é executado imediatamente antes do próximo prompt ser impresso (IIRC). Você está certo sobre quando a história está escrita, a propósito. O comando prompt modificado irá liberar o histórico.

    
por 01.12.2011 / 07:57