Às vezes, meu .bash_history é limpo. Por quê? Como posso evitar isso?

3

Aqui está meu shell:

$ $SHELL --version | head -1
GNU bash, version 4.1.7(2)-release (i386-apple-darwin10.3.0)

Aqui estão as minhas configurações relacionadas ao histórico:

export HISTCONTROL=ignoredups:erasedups
export HISTSIZE=100000
export HISTFILESIZE=100000
shopt -s histappend
shopt -s histverify ## edit a recalled history line before executing
shopt -s histreedit ## reedit a history substitution line if it failed

## Save the history after each command finishes
## (and keep any existing PROMPT_COMMAND settings)
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"

Atualizar

Consegui causar o truncamento usando sudo -s . Ao entrar no shell sudo, o histórico é truncado para 500 entradas. Quais arquivos rc o sudo -s examina para garantir que ele carregue minhas configurações de histórico?

    
por kch 03.08.2010 / 10:45

2 respostas

3

Existe outra variável que você precisa verificar: HISTFILESIZE

De man bash :

HISTFILESIZE
The maximum number of lines contained in the history file. When this variable is assigned a value, the history file is truncated, if necessary, by removing the oldest entries, to contain no more than that number of lines. The default value is 500. The history file is also truncated to this size after writing it when an interactive shell exits.

Editar:

Verifique os arquivos de inicialização para verificar se estão sendo processados corretamente e na ordem correta e se as variáveis estão sendo definidas na correta e não sobrescritas.

Minha preferência é não obter um arquivo de inicialização "oficial" de outro, mas ter um código comum em um terceiro arquivo "local" que seja originado por cada um dos "oficiais" e deixar que o shell determine quando eles são processado (interativo ou não, login ou não). Esteja ciente de que algumas distribuições têm esses arquivos configurados de modo que um origine o outro, para que você tenha certeza de não configurar um loop infinito.

Se você estiver usando mais esses arquivos de histórico para fazer log do que reutilizando os comandos anteriores, consulte minhas funções de registro e veja se elas atendem às suas necessidades. Você ainda pode usar o histórico - você não precisará manter muito disso.

Veja os comentários abaixo para mais detalhes.

    
por 03.08.2010 / 16:11
0

E você parece ter certeza de que não foi você mesmo quem (acidentalmente) o excluiu ... Você é o único usuário neste computador?

Portanto, isso é altamente incomum. Certifique-se de que ninguém esteja mexendo com o seu bash_history. Talvez você possa obter alguma inspiração aqui: link

    
por 03.08.2010 / 11:58