¿Cómo persistir la historia de bash?

9

No sé si esto se espera, pero mi historial no se guarda en las sesiones. Es decir, si cierro la ventana, cuando la abro de nuevo, el historial está vacío. ¿Cómo puedo persistir en las sesiones?

Estas son las salidas de los comandos que solicitó:

 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

Después de las ediciones descritas en la respuesta a continuación, ahora obtengo:

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.

Todavía no puedo tener un historial guardado en las sesiones. Leo las siguientes preguntas:

Ninguno parecía abordar mi problema, incluida la respuesta a continuación de la misma persona a la que respondieron su pregunta por el supuesto duplicado.

Coche981
fuente
También vea mi pregunta aquí y las preguntas a las que se vincula. Pruebe las sugerencias en ellos y pregunte nuevamente si aún tiene problemas. Mientras tanto, votar para cerrar como un duplicado.
terdon
edit: set -o | grep history muestra que el historial está activado, echo $ HISTFILE muestra ~ / .bash_history, echo $ HISTSIZE y $ HISTFILESIZE ambos muestran 500. Pero el historial aún no persiste en las sesiones
Car981
$ HISTFILE está establecido en ~ / .bash_history, pero no hay ningún archivo .bash_history en ~. Cómo puede ser esto ?
Coche981
Por favor, editar su pregunta para añadir nueva información en lugar de comentar. Incluir la salida de estos comandos: set -o | grep history, grep -i history ~/.bashrc ~/.bash_profile ~/etc/bash.bashrc ~/etc/profile ~/.profiley ls -la ~/ | grep history.
terdon
Pruebe a establecer un archivo de historia específica, añadir esta línea a su ~/.bashrc: export HISTFILE="~/history". Eso hace una diferencia?
terdon

Respuestas:

7

Bueno, parece que tu ~/.bashrcno tiene las opciones necesarias. Asegúrese de que estas líneas estén en su ~/.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
fuente
Aún no funciona. Consulte editar para obtener una actualización del nuevo resultado de salida.
Car981
6

OK, descubrí lo que está mal. No puedo cerrar la ventana, tengo que escribir 'salir' para que se cierre con gracia.

Coche981
fuente
¡Has respondido tu propia pregunta! Esto es genial, pero debe marcarlo como tal, para que otros sepan que no espera más respuestas.
Tiago
Es difícil decir que esta es una respuesta aceptable: tengo el mismo problema y cerrar manualmente la ventana para guardar el historial no es una buena idea. A menudo, cierro la ventana de terminal de otras maneras y no me gustaría perderla en ese momento.
Krzysztof Bociurko