Está funcionando conforme o esperado. ignoredups , implícito por ignoreboth , não adiciona um comando ao histórico se for igual ao comando anterior imediato. Não parece mais distante na história. Do manual :
Um valor de "
ignoredups" faz com que as linhas correspondam às anteriores entrada de histórico para não ser salvo.
Então, isso adicionará foo duas vezes ao histórico:
$ foo
$ bar
$ foo
Mas será assim:
$ foo
$ bar
$ foo
$ foo
O último foo não será adicionado ao histórico, pois o comando anterior foi foo . Use erasedups em conjunto:
Um valor de "
erasedups" faz com que todas as linhas anteriores correspondam ao linha atual a ser removida da lista de histórico antes que a linha seja salvo.
Então:
HISTCONTROL=ignoreboth:erasedups