Eu enfrento esse problema em alguns dos servidores UNIX. Quando eu abro a sessão diferente para o mesmo usuário, o histórico de comandos é compartilhado por toda a sessão. Isso cria problemas se por engano eu pressionar Ctrl-P
ou up arrow
e apenas pressione ENTER. Em uma ocasião eu acabo correndo rm -rf *
Felizmente eu estava no diretório onde não tenho permissões para remover arquivos.
Como ter histórico de comando separado para diferentes sessões para o mesmo usuário? Na maioria das vezes eu estou usando shells ksh e tcsh.
Do KSH FAQ :
Q1. Como faço para obter arquivos de histórico separados para shell?
A1. O KSH usa um arquivo de histórico compartilhado para todos os shells que usam o mesmo nome do arquivo de histórico. Isso significa que os comandos inseridos em uma janela serão vistos por shells em outras janelas. Para obter o Windows separado, a variável histfile precisa ser definida como um nome diferente antes que o primeiro comando do histórico seja criado.
Você pode adicionar HISTFILE=~/.hist$$
para o seu .profile
. Isso deve gerar um arquivo exclusivo por sessão.
Você vai acabar com um grande número de .hist*
Então eu sugiro que você remova-os ocasionalmente.
Estou supondo que você esteja falando de sessões simultâneas; Separando as sessões que são depois que uns dos quais não são muito úteis: você nunca seria mais capaz de usar a história, porque todas as sessões seriam únicas. Se esse fosse o caso, provavelmente seria melhor desabilitar o histórico de comandos.
Se estamos falando de separar a sessão simultânea, eu recomendo que você use o bash. Tenho certeza de que não estou recebendo o histórico de comando de duas sessões simultâneas misturadas com ela. Bash só escreve o histórico para .bash_history
no logout, então o histórico de comandos não será misturado até o logout. Desde que o uso de bash seja aceitável, isso resolveria seu problema?
Mal adicionar algo à resposta de Gert.
Gert's
Você pode adicionar histfile = ~/.hist $$ para o seu .Profile. Isso deve gerar um arquivo exclusivo por sessão.
me
Você pode remover esses arquivos automaticamente adicionando o seguinte.
trap 'rm ${HISTFILE}' exit