Histórico inconsistente de Bash

4

Nesta instalação do Debian Jessie, o histórico do Bash parece estar se comportando de forma inconsistente no Terminal do Gnome:

$ echo $USER
me
$ echo $HISTFILE
/home/me/.bash_history
$ grep browser ~/.bash_history 
browser-sync start
$ history | grep browser
 2071  grep browser ~/.bash_history 
 2073  history | grep browser

A linha browser-sync do arquivo ~/.bash_history é bem antiga: muito mais antiga que a sessão atual do Terminal. Por que isso não aparece nos resultados de history | grep browser ?

    
por sampablokuper 01.12.2015 / 18:47

2 respostas

2

A variável $HISTSIZE tem um valor muito baixo. A aparente inconsistência pode ser resolvida aumentando suficientemente o valor de $HISTSIZE .

O manual de Bash não explica muito bem:

HISTSIZE

The maximum number of commands to remember on the history list. If the value is 0, commands are not saved in the history list. Numeric values less than zero result in every command being saved on the history list (there is no limit). The shell sets the default value to 500 after reading any startup files.

Aqui é uma explicação melhor:

The default value for HISTSIZE (500) would load only a fraction of the saved history [if the saved history is greater than 500 lines].

    
por 01.12.2015 / 19:22
3

Por padrão, ~/.bash_history é gravado no disco quando uma sessão interativa é encerrada. Isso significa que, se você tiver shells simultâneos abertos, somente a sessão de shell mais recentemente terminada terá seu histórico gravado em disco.

(tecnicamente, todas as sessões são gravadas em disco, mas duas sessões concorrentes não sabem sobre as histórias dos outros, então quando uma delas sai, ela escreve o que ela acha que a nova história é, e então quando o outro sai, ele escreve seu histórico)

Consulte o link para obter mais detalhes.

    
por 01.12.2015 / 19:14