Intenté buscar ~/.bash_history
mis comandos recientes mientras estaba en una sesión de terminal, pero simplemente no estaban allí. Supongo que esto se debe a que tengo varias sesiones de terminal abiertas.
¿Hay alguna manera de que pueda sincronizar (es decir, sync-push o sync-write-out) el historial de comandos de la sesión de terminal actual en el archivo bash_history (sin cerrar la sesión y perder ese entorno)?
(Sería remotamente similar en idea a cómo el sync
comando almacena las modificaciones del sistema de archivos en algunos sistemas).
Me imagino que podría configurar bash para preservar el historial de múltiples sesiones, pero la capacidad de impulsar el búfer de historial actual aún sería útil en situaciones en las que esté trabajando en una nueva máquina y accidentalmente olvidó configurar bash de la manera que hubiera deseado .
fuente
history -a
comando de construcción de shell, pero de alguna manera ahora obtengo 'permiso denegado' en el.bash_history
archivo, después de eso.Respuestas:
Agregue esta línea a
.bashrc
:Abrir nueva terminal y verificar.
Explicación
history -a
agrega nuevas líneas de historial al archivo de historial.history -n
le dicebash
que lea las líneas que no se leen del archivo de historial a la lista de historial actual de la sesión.PROMPT_COMMAND
: el contenido de esta variable se ejecuta como comando regular antes debash
mostrar el indicador. Entonces, cada vez que ejecuta un comando,history -a; history -n
se ejecuta y subash
historial se sincroniza.fuente
history -a
en una terminal con bashrc no modificado también.export PROMPT_COMMAND="${PROMPT_COMMAND};history -a; history -n"
${PROMPT_COMMAND}
está vacío, esto da un error debido a la delantera;
export PROMPT_COMMAND="${PROMPT_COMMAND}${PROMPT_COMMAND:+;}history -a; history -n"