O que determina o que aparece no comando bash history?

2

Quando executo history , recebo uma lista de comandos. No entanto, ele não parece estar completo, mesmo por um determinado período de tempo. (Parece que não há cobertura contínua dos últimos N comandos - parece que alguns estão faltando.) Além disso, a saída de history é diferente nas diferentes guias do terminal. Isso ocorre porque o histórico não é gravado no disco até que a guia seja fechada? Isso explica por que certos comandos parecem se perder, porque são sobrescritos ao fechar as abas?

Estou no OSX 10.8 pelo que vale a pena.

    
por Nick Heiner 14.01.2013 / 19:45

2 respostas

5

Diferentes terminais estão executando instâncias diferentes do seu $SHELL (que é BASH provavelmente desde que você esteja no OSX). Cada instância mantém seu próprio histórico, que é concatenado no histórico de sessão global quando essa instância BASH específica é encerrada.

Você pode tentar isso abrindo dois terminais, executando alguns comandos, fechando os dois terminais e abrindo um terceiro. Os comandos dos dois terminais anteriores (agora fechados) estarão agora no seu histórico.

Também há algumas opções BASH para remover comandos duplicados, veja seu $HOME/.bashrc e verifique se você tem uma linha como:

export HISTCONTROL=ignoredups

Essa opção diz ao BASH para não salvar comandos duplicados. Então, se você executar ls 10 vezes, ele será salvo apenas uma vez.

    
por 14.01.2013 / 19:54
0

O histórico do shell existe por instância de bash. É lido quando o bash começa e é escrito quando o bash sai. Fechando a aba forçosamente mata bash, tornando-o incapaz de escrever a história como normal.

    
por 14.01.2013 / 19:51

Tags