Sim, ksh93
grava seu histórico de linha de comando no arquivo, enquanto bash
o grava quando o shell é encerrado. Procurando algum código fonte , parece que o buffer do histórico na memória é 4k ( HIST_BSIZE
no código), mas não consigo descobrir se ele é liberado quando está cheio ou depois de um certo número de comandos (que podem HIST_MARKSZ
está fazendo neste código?).
E sim, muitas sessões interativas compartilham o histórico se usarem a mesma configuração de HISTFILE
. Isso está documentado (minha ênfase):
Command Re-entry.
The text of the last
HISTSIZE
(default 512) commands entered from a terminal device is saved in a history file. The file$HOME/.sh_history
is used if theHISTFILE
variable is not set or if the file it names is not writable. A shell can access the commands of all interactive shells which use the same namedHISTFILE
.
O arquivo de histórico será mantido no tamanho especificado em HISTSIZE
, mas não será truncado periodicamente conforme você passa. O que está acontecendo para você é, acho , que desde que você use tty
para definir um HISTFILE
exclusivo para cada sessão do shell interativa, sair e reiniciar sessões interativas pode ou não pegar o "correto "arquivo de histórico dependendo de qual TTY o shell está conectado.
Se um novo TTY (nunca usado com uma sessão anterior) for alocado para uma sessão de shell, seu arquivo de histórico ficará naturalmente vazio.