A maioria dos shells do Unix lê o histórico antigo de um arquivo, uma vez - quando o shell é iniciado - e quando você fecha esse shell, o histórico é gravado no arquivo novamente.
Normalmente, o conteúdo antigo é simplesmente sobrescrito, por isso, se você fizer algo como ...
- faça o login nas sessões A e B
- A e B lêem o mesmo conteúdo de
~/.history
- A e B lêem o mesmo conteúdo de
- execute o comando
test
em A- A adiciona
test
ao seu histórico na memória - B não sabe sobre o comando
- A adiciona
- logout de A
- A sobrescreve
~/.history
com seu histórico, que temtest
- A sobrescreve
- faça o login na sessão C
- C lê o conteúdo de
~/.history
, comtest
- C lê o conteúdo de
- logout de B
- B sobrescreve
~/.history
com seu histórico, que não temtest
- B sobrescreve
- logout de C
- C sobrescreve
~/.history
com seu histórico, que temtest
- C sobrescreve
, em seguida, test
será salvo no arquivo de histórico após a etapa 3, mas a etapa 5 a descartará e a etapa 6 a adicionará novamente ...
Alguns shells têm uma opção "anexar histórico" que evita isso (por exemplo, shopt -s histappend
no Bash).
Se você deseja ter históricos completamente separados, uma maneira fácil é apenas vincular seu arquivo de histórico a /dev/null
.