
Eu enfrento esse problema em alguns servidores Unix. Quando abro sessões diferentes 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 pressionar Enter. Em uma ocasião acabo correndo rm -rf *
felizmente por estar em um diretório onde não tenho permissão para remover arquivos.
Como ter um histórico de comandos separado para sessões diferentes para o mesmo usuário? Na maioria das vezes estou usando shells ksh e tcsh.
Responder1
Você pode adicionar HISTFILE=~/.hist$$
ao seu arquivo .profile
. Isso deve gerar um arquivo exclusivo por sessão.
Você acabará com um grande número, .hist*
então sugiro que você os remova ocasionalmente.
Responder2
Deperguntas frequentes sobre ksh:
Q1. Como obtenho arquivos de histórico separados para o shell?
A1. ksh usa um arquivo de histórico compartilhado para todos os shells que usam o mesmo nome de arquivo de histórico. Isso significa que os comandos inseridos em uma janela serão vistos pelos shells em outras janelas. Para obter janelas separadas, a variável HISTFILE precisa ser definida com um nome diferente antes que o primeiro comando de histórico seja criado.
Responder3
Presumo que você esteja falando de sessões simultâneas; separar sessões uma após a outra não é muito útil: você nunca mais poderá usar seu histórico, porque todas as sessões seriam únicas. Se fosse esse o caso, provavelmente seria melhor apenas desabilitar o histórico de comandos.
Se estamos falando sobre separar sessões simultâneas, recomendo que você use o Bash. Tenho certeza de que não estou misturando o histórico de comandos de duas sessões simultâneas. O Bash só grava o histórico no .bash_history
logout, portanto, o histórico de comandos não será misturado até depois do logout. Desde que o uso do Bash seja aceitável, isso resolveria o seu problema?
Responder4
Você poderia usartela. Eu também fiz umvariável que foi definida pelo meu perfil do konsole e deu a cada sessão um arquivo de histórico diferente, apenas maneiras em que consigo pensar.