![guardar el historial de bash, regularmente](https://rvso.com/image/1330221/guardar%20el%20historial%20de%20bash%2C%20regularmente.png)
He configurado bash para guardar el historial en un archivo. Hace esto cada vez que bash sale [correctamente]. Como a veces bash no sale correctamente, el historial se pierde.
Entonces la pregunta es ¿puedo configurar bash para guardar el historial con más regularidad?
Estoy ejecutando Debian Gnu (versión 6, Squeeze) con un kernel de Linux.
Versión de bash: GNU bash, versión 4.1.5(1) (i486-pc-linux-gnu)
Respuesta1
guarda esto en tu bash_profile o bashrc
shopt -s histappend
PROMPT_COMMAND="history -a;$PROMPT_COMMAND"
Respuesta2
Decidí usar export PROMPT_COMMAND='history -a'
en mi .bash_aliases que escribe desde la lista del historial en la memoria al archivo del historial en cada mensaje. Tuve algunos problemas con la deduplicación, pero se resolvieron. Recurrí al uso también de un cron.daily y mensual para hacer una copia de seguridad del archivo. Si se interrumpe el terminal sin salir, no se guardará. Incluso atrapar la salida no funcionará. Desafortunadamente, el trabajo cron tampoco puede guardar la lista del historial, que está almacenada en la memoria. No pude encontrar una manera de enviar un comando al shell en ejecución actual para history -w
escribir de la lista al archivo. Eso podría usarse, pero tendría que haber uno separado para cada shell abierto en una pestaña si se quisiera mantener el trabajo separado. De lo contrario, hay otro enlace que explica cómo escribir en cada mensaje y al mismo tiempo realizar la deduplicación.
Respuesta3
Es posible que su $HISTFILE sea propiedad de root. Suponiendo que esté utilizando bash como su shell de inicio de sesión. Aquí se explica cómo comprobarlo:
$ [ -z $HISTFILE ] && echo need to set HISTFILE || ls -l $HISTFILE
-rw------- 1 root root 36639 May 21 19:48 /home/joeb/.bash_history
El valor predeterminado para HISTFILE debe ser ~/.bash_history, si ve el error "es necesario configurar HISTFILE" o si $HISTFILE no es ~/.bash_history, entonces debe marcar ~/.profile o ~/.bash_profile o ~/. bashrc para asegurarse de que no se esté configurando o restableciendo incorrectamente.
Normalmente, solo es propiedad del root, así que simplemente reinícialo:
$ chown joeb.joeb $HISTFILE
$ ll $HISTFILE
-rw------- 1 joeb joeb 36639 May 21 19:48 /home/joeb/.bash_history
Cerrar sesión y luego iniciar sesión.
$ history
Debe mostrar el último conjunto de comandos ingresados antes de que el archivo fuera propiedad del root, seguido de los comandos ingresados después de que se cambiara la propiedad del archivo.