Tenho várias sessões PuTTy abertas em meu servidor SunOS 5.10 e estou usando ksh, e ÀS VEZES o histórico de comandos é compartilhado entre as diferentes sessões e ÀS VEZES não. Não consigo descobrir o que determina se é ou não compartilhado. Por compartilhado, o que quero dizer é que um comando executado em uma sessão será visto como um comando anterior executado em outra sessão.
Prefiro que não seja compartilhado. Existe alguma configuração para isso?
Responder1
A maioria dos shells 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, então se você fizer algo como...
- faça login nas sessões A e B
- A e B leem o mesmo conteúdo de
~/.history
- A e B leem 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
- sair de A
- A substitui
~/.history
sua história, que temtest
- A substitui
- faça login na sessão C
- C lê o conteúdo de
~/.history
, comtest
- C lê o conteúdo de
- sair de B
- B sobrescreve
~/.history
com seu histórico, que não temtest
- B sobrescreve
- sair de C
- C sobrescreve
~/.history
com seu histórico, que temtest
- C sobrescreve
então test
será salvo no arquivo de histórico após a etapa 3, mas a etapa 5 irá descartá-lo e a etapa 6 irá adicioná-lo novamente...
Alguns shells possuem 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 é simplesmente criar um link simbólico para seu arquivo de histórico /dev/null
.