Em um Mac, Serra.
Não tenho HIST
configurações relacionadas que eu possa ver:
~ @ Magni (jcollum)
$ env|grep HIST
~ @ Magni (jcollum)
$ cat ~/.bash_profile | grep HIST
~ @ Magni (jcollum)
Mas tenho coisas na minha história que fiz ontem que não existem depois de reiniciar. Realmente duvido muito que coloquei espaços antes do comando toda vez que fiz isso.
Eu sei que há posts aqui que me dizem como consertar isso, mas eu gostaria de saberpor queisso acontece desta forma.
Por exemplo, quando eu uso um curl
que executei ontem, nada:
~ @ Magni (jcollum)
$ history | grep curl
166 curl -X POST -d [email protected] -d password=********** http://localhost:3000/login
503 hg curl
519 history | grep curl
400 comandos atrás? Eu sei que usei curl
uma dúzia de vezes na semana passada, mas (e não uso o bash o suficiente para executar centenas de comandos esta semana).
Basicamente, estou perplexo e não sei por que está faltando tanto do que fiz. É possível que o histórico esteja sendo registrado apenas em uma instância do bash?
Responder1
É possível que o histórico esteja sendo registrado apenas em uma instância do bash?
É isso que está acontecendo. A maneira como o histórico funciona no bash, a menos que você tenha se esforçado para alterá-lo, é:
- Quando o bash é iniciado, ele carrega o histórico salvo do arquivo de histórico.
- Cada vez que um comando é executado, ele é adicionado ao histórico na memória do bash.
- Quando o bash sai, ele salva o histórico acumulado no arquivo de histórico.
Agora suponha que você inicie duas instâncias do bash. Ambos carregam o arquivo de histórico quando são iniciados. Ambos adicionam os comandos que executam ao seu próprio histórico. Quando uma instância é encerrada, ela salva o histórico antigo e seus próprios comandos no arquivo de histórico. Quando a segunda instância sai, ela salva o histórico antigo maisisso épróprio comando para o arquivo de histórico - e ao fazer isso, ele limpa o histórico da primeira instância que saiu.
O mecanismo de salvamento de histórico do Bash é excessivamente simplista. Suas linhas de histórico estão à mercê de todas as outras instâncias em execução - a última saída apaga o histórico das outras. As soluções incluem anexar o novo histórico ao arquivo de histórico em vez de substituir o arquivo de histórico por todo o histórico da memória ou anexar linhas ao arquivo de histórico assim que forem executadas. VerPreservar o histórico do bash em várias janelas de terminalePreservar o histórico do bash em várias janelas de terminalpara algumas maneiras de implementar esta e outras variantes.
A solução mais simples é executar o zsh, que salva o histórico de maneira sensata por padrão. Eu recomendo isso, especialmente porque você está executando o macOS que está preso em uma versão antiga do bash porque a Apple não gosta da licença das versões lançadas desde 2009.