Quando e como o bash_history é anexado?


6

Tanto quanto eu posso dizer, a história de um shell individual é anexada 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 a história só é escrita 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

)

Respostas:


4

Você está perdendo uma linha em seu .bashrc. Adicionar:

PROMPT_COMMAND="$PROMPT_COMMAND;history -a"

depois de

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.


Eu prefiro recomendar para colocar PROMPT_COMMAND="$PROMPT_COMMAND;history -a" em .bash_profile uma vez que é uma expressão recursiva e para cada nível de aninhamento de bash acrescentará próximo desnecessário history -a ligar.
czerny
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.