Por que eu vejo diferentes versões do histórico do bash para o mesmo usuário?

4

Eu ssh em meus servidores usando root. Às vezes, quando revejo meu histórico, vejo um histórico de uma sessão anterior, mas não a última. Por que isso acontece com a mesma conta de usuário? Está relacionado com o tty que estou usando? Bash 4

    
por Gregg Leventhal 28.08.2013 / 17:19

2 respostas

4

Toda vez que você fecha um shell, o conteúdo do histórico desse shell em particular sobrescreve o arquivo de histórico que foi gravado pelos anteriores.

O conteúdo do histórico de um shell é armazenado neste arquivo $HOME/.bash_history . É um arquivo de texto simples para que você possa verificá-lo. Existem inúmeras opções para o histórico que você pode definir para aumentar seu comportamento. Dê uma olhada na página do bash man . A maioria deles é denominada hist* ou HIST* . Basta procurar por eles.

Em particular, shopt -s histappend faz com que o bash acrescente o histórico da sessão atual ao arquivo de histórico, em vez de sobrescrever o arquivo de histórico.

    
por 28.08.2013 / 17:40
1

Existem vários motivos pelos quais isso pode acontecer.

Primeiro, se a última sessão ainda estiver ativa, ela não teria salvo seu histórico no arquivo de histórico, a menos que o comando history -a (anexar novo histórico) ou history -w (gravar história excedente) fosse executado a partir do concha.

Além disso, se o shell for finalizado anormalmente, como devido a um kill -9 , que deve ser usado apenas como último recurso, isso evitará que ele salve o histórico.

Outro problema que vi foi usar o comando script , embora eu suspeite que seja apenas a ordem de operações e minhas próprias projeções / ilusões. A nova sessão do shell executada por script não tem o histórico mais recente porque ele relê o arquivo. Além disso, depois de existir script , o shell pai não atualiza com o histórico criado lá. Usando o comando history , isso deve ser fácil de corrigir.

    
por 28.08.2013 / 21:01