Como ter histórico de comandos separado para sessões diferentes para o mesmo usuário?

8

Eu enfrento esse problema em alguns servidores Unix. Quando abro uma 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 pressionar Enter. Em uma ocasião eu acabei correndo rm -rf * felizmente eu estava no diretório onde eu não tenho permissões para remover arquivos.

Como ter histórico de comandos separado para sessões diferentes para o mesmo usuário? Na maior parte do tempo, estou usando shells ksh e tcsh.

    
por Hemant 16.08.2010 / 09:34

5 respostas

8

A partir do ksh faq :

Q1. How do I get separate history files for shell?

A1. ksh uses a shared history file for all shells that use the same history file name. This means that commands entered in one window will be seen by shells in other windows. To get separate windows, the HISTFILE variable needs to be set to different name before the first history command is created.

    
por 16.08.2010 / 13:33
11

Você pode adicionar HISTFILE=~/.hist$$ ao seu .profile . Isso deve gerar um arquivo exclusivo por sessão.

Você terá um grande número de .hist* , então sugiro removê-los ocasionalmente.

    
por 16.08.2010 / 15:22
2

Suponho que você esteja falando de sessões simultâneas; separar as sessões que são uma após a outra não é muito útil: você nunca seria capaz de usar sua história, porque todas as sessões seriam únicas. Se fosse esse o caso, você provavelmente seria melhor apenas desabilitar o histórico de comandos.

Se estamos falando em separar a sessão simultânea, recomendamos que você use o Bash. Tenho certeza que não estou recebendo o histórico de comandos de duas sessões simultâneas misturadas com ele. O Bash apenas grava o histórico em .bash_history no logout, portanto, o histórico de comandos não será misturado até após o logout. Desde que o uso do Bash seja aceitável, isso resolveria seu problema?

    
por 16.08.2010 / 10:12
1

Adicionarei algo à resposta de Gert.

Gert

Você pode adicionar HISTFILE = ~ / .hist $$ ao seu .profile. Isso deve gerar um arquivo exclusivo por sessão.

Meu

Você pode remover esses arquivos automaticamente adicionando o seguinte.

trap 'rm ${HISTFILE}' exit

    
por 02.02.2017 / 18:13
-1

Você pode usar a tela . Eu também fiz uma variável que foi definida pelo meu perfil de konsole e dei a cada uma das sessões um arquivo de histórico diferente , apenas formas de pensar.

    
por 16.08.2010 / 10:05