(repostando minha resposta do link )
Após muitas iterações grandes e feias e casos estranhos ao longo dos anos, agora tenho uma seção concisa de meu .bashrc dedicado a isso.
Primeiro, você deve comentar ou remover esta seção do seu .bashrc (padrão para o Ubuntu). Se você não o fizer, certos ambientes (como screen
sessions) ainda truncarão seu histórico:
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
# HISTSIZE=1000
# HISTFILESIZE=2000
Em segundo lugar, adicione isso ao final do seu .bashrc:
# Eternal bash history.
# ---------------------
# Undocumented feature which sets the size to "unlimited".
# https://stackoverflow.com/questions/9457233/unlimited-bash-history
export HISTFILESIZE=
export HISTSIZE=
export HISTTIMEFORMAT="[%F %T] "
# Change the file location because certain bash sessions truncate .bash_history file upon close.
# http://superuser.com/questions/575479/bash-history-truncated-to-500-lines-on-each-login
export HISTFILE=~/.bash_eternal_history
# Force prompt to write history after every command.
# http://superuser.com/questions/20900/bash-history-loss
PROMPT_COMMAND="history -a; $PROMPT_COMMAND"
Nota: todos os comandos são escritos imediatamente após serem executados, portanto, se você colar acidentalmente uma senha, você não pode simplesmente "matar -9 %%" para evitar a gravação do histórico, você precisará removê-la manualmente.
Observe também que cada sessão bash carregará o arquivo completo do histórico na memória, mas mesmo que seu arquivo de histórico cresça para 10MB (o que levará um tempo longo, longo ), você não notará muito de um efeito no seu tempo de inicialização bash.