Do homem bash:
On startup, the history is initialized from the file named by the vari‐
able HISTFILE (default ~/.bash_history). The file named by the value
of HISTFILE is truncated, if necessary, to contain no more than the
number of lines specified by the value of HISTFILESIZE. [...] When an
interactive shell exits, the last $HISTSIZE lines are copied from the
history list to $HISTFILE.
Enquanto esse texto é bem claro, vamos brincar um pouco pelo exemplo (este é um sistema deb, mas bash é bash).
Meu status de histórico agora:
~$ set | grep HIST
HISTCONTROL=ignoredups:ignorespace
HISTFILE=/home/hmontoliu/.bash_history
HISTFILESIZE=2000
HISTSIZE=1000
Como HISTFILESIZE é 2000 e HISTSIZE é 1000, apenas as últimas 1000 linhas do HISTFILE estão disponíveis, então você pode ter a impressão errada de que meu histórico começa em 1000.
~$ history | head -1
1000 if i=1; then echo $i; done
~$ history | wc -l
1000
Mas, de fato, o HISTFILE armazena os últimos 2000 comandos:
~$ wc -l $HISTFILE
2000 /home/hmontoliu/.bash_history
Se você acha que é chato, você pode igualar o HISTSIZE e o HISTFILESIZE
~$ echo "export HISTSIZE=$HISTFILESIZE" >> .bashrc
~$ bash -l
~$ history | head -1
1 ls
~$ history | wc -l
2000
~$ set | grep HIST
HISTCONTROL=ignoredups:ignorespace
HISTFILE=/home/hmontoliu/.bash_history
HISTFILESIZE=2000
HISTSIZE=2000
Uma dica final: você deve executar help history
para ver as ações que você pode fazer com sua história