Como persistir o histórico do bash?

9

Não sei se isso é esperado, mas meu histórico não é salvo nas sessões. Ou seja, se eu fechar a janela, quando a abrir novamente, o histórico estará vazio. Como posso persistir durante as sessões?

Aqui estão as saídas dos comandos que você pediu:

 set -o | grep history
history         on

$ grep -i history ~/.bashrc ~/.bash_profile ~/etc/bash.bashrc ~/etc/profile ~/.profile
/cygdrive/c/cygwin/home/car/.bashrc:# Make bash append rather than overwrite the history on disk
/cygdrive/c/cygwin/home/car/.bashrc:# History Options
/cygdrive/c/cygwin/home/car/.bashrc:# Don't put duplicate lines in the history.
/cygdrive/c/cygwin/home/car/.bashrc:# export PROMPT_COMMAND="history -a"
grep: /cygdrive/c/cygwin/home/car/etc/bash.bashrc: No such file or directory
grep: /cygdrive/c/cygwin/home/car/etc/profile: No such file or directory
/cygdrive/c/cygwin/home/car/.profile:if [ "x$HISTFILE" == "x/.bash_history" ]; then
/cygdrive/c/cygwin/home/car/.profile:  HISTFILE=$HOME/.bash_history

$ ls -la ~/ | grep history -> no output

$ echo $HISTFILE 
~/.bash_history
$ echo $HISTSIZE
500
$ echo $HISTFILESIZE 
500

Após as edições descritas na resposta abaixo, agora recebo:

grep -i hist .bashrc
# Make bash append rather than overwrite the history on disk
shopt -s histappend
# History Options
# Don't put duplicate lines in the history.
export HISTCONTROL="ignoredups"
# (added) A new shell gets the history lines from all previous shells
PROMPT_COMMAND='history -a'
# HISTIGNORE is a colon-delimited list of patterns which should be excluded.

Ainda não consigo salvar um histórico entre as sessões. Eu li as seguintes perguntas:

Ninguém parecia resolver o meu problema, incluindo a resposta abaixo da própria pessoa que teve sua pergunta respondida na suposta duplicata.

Carro981
fonte
Veja também minha pergunta aqui e as perguntas às quais ela se vincula. Tente as sugestões nelas e pergunte novamente se você ainda tiver problemas. No emantime, votando para fechar como duplicado.
terdon
editar: definir -o | grep a história mostra a história está ligada, echo $ HISTFILE mostra ~ / .bash_history, echo $ HISTSIZE e US $ HISTFILESIZE ambos mostram 500. Mas a história ainda não é mantida entre sessões
Car981
O $ HISTFILE está definido como ~ / .bash_history, mas não há arquivo .bash_history em ~. Como isso pode ser ?
precisa saber é o seguinte
Por favor edite sua pergunta para adicionar novas informações ao invés de comentar. Incluir a saída destes comandos: set -o | grep history, grep -i history ~/.bashrc ~/.bash_profile ~/etc/bash.bashrc ~/etc/profile ~/.profilee ls -la ~/ | grep history.
terdon
Tente configurar um arquivo de histórico específico, adicione esta linha ao seu ~/.bashrc: export HISTFILE="~/history". Isso faz diferença?
terdon

Respostas:

7

Bem, parece que o seu ~/.bashrcnão possui as opções necessárias. Verifique se estas linhas estão em seu ~/.bashrc:

# Make Bash append rather than overwrite the history on disk:
shopt -s histappend
# A new shell gets the history lines from all previous shells
PROMPT_COMMAND='history -a'
# Don't put duplicate lines in the history.
export HISTCONTROL=ignoredups
Terdon
fonte
Ainda não funciona. Consulte editar para obter uma atualização do novo resultado de saída.
Car981
7

OK, eu descobri o que há de errado. Não consigo fechar a janela, tenho que digitar 'exit' para que ela se feche normalmente.

Carro981
fonte
Você respondeu sua própria pergunta! Isso é ótimo, mas você deve marcá-lo como tal, para que outros saibam que você não está esperando respostas adicionais.
Tiago
Difícil dizer que esta é uma resposta aceitável - eu tenho o mesmo problema e fechar a janela manualmente para salvar o histórico não é uma boa ideia. Frequentemente, fecho a janela do terminal de outras maneiras e não gostaria de perdê-la.
Krzysztof Bociurko