Comment persister l'histoire de bash?

9

Je ne sais pas si cela est prévu, mais mon historique n'est pas enregistré entre les sessions. C'est-à-dire, si je ferme la fenêtre, puis quand je l'ouvre à nouveau, l'historique est vide. Comment puis-je le conserver d'une session à l'autre?

Voici les sorties des commandes que vous avez demandées:

 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

Après les modifications décrites dans la réponse ci-dessous, je reçois maintenant:

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.

Je ne parviens toujours pas à sauvegarder l'historique des sessions. J'ai lu les questions suivantes:

Aucun ne semblait aborder mon problème, y compris la réponse ci-dessous de la personne même à qui la question a été répondue à partir du double supposé.

Car981
la source
Voir également ma question ici et les questions auxquelles elle renvoie. Essayez les suggestions qui s'y trouvent et demandez à nouveau si vous avez encore des problèmes. En temps réel, voter pour fermer en double.
terdon
modifier: set -o | grep history montre que l'historique est activé, echo $ HISTFILE affiche ~ / .bash_history, echo $ HISTSIZE et $ HISTFILESIZE affichent tous les deux 500. Mais l'histoire n'est toujours pas persistante d'une session à l'autre
Car981
$ HISTFILE est défini sur ~ / .bash_history, mais il n'y a pas de fichier .bash_history dans ~. Comment se peut-il ?
Car981
Veuillez modifier votre question pour ajouter de nouvelles informations plutôt que de commenter. Inclure la sortie de ces commandes: set -o | grep history, grep -i history ~/.bashrc ~/.bash_profile ~/etc/bash.bashrc ~/etc/profile ~/.profileet ls -la ~/ | grep history.
terdon
Essayez de configurer un fichier d'historique spécifique, ajoutez cette ligne à votre ~/.bashrc: export HISTFILE="~/history". Cela fait-il une différence?
terdon

Réponses:

7

Eh bien, il semble que votre ~/.bashrcn'a pas les options nécessaires. Assurez-vous que ces lignes sont dans votre ~/.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
la source
Ça ne marche toujours pas. Voir modifier pour une mise à jour du nouveau résultat de sortie.
Car981
7

OK, j'ai découvert ce qui ne va pas. Je ne peux pas fermer la fenêtre, je dois taper 'exit' pour qu'elle se ferme correctement.

Car981
la source
Tu as répondu à ta propre question! C'est très bien, mais vous devez le marquer comme tel, pour que les autres sachent que vous n'attendez pas d'autres réponses.
Tiago
Difficile de dire que c'est une réponse acceptable - j'ai le même problème et fermer manuellement la fenêtre pour enregistrer l'historique n'est pas une bonne idée. Souvent, je ferme la fenêtre du terminal par d'autres moyens et je ne voudrais pas la perdre alors.
Krzysztof Bociurko