Cómo almacenar todos los comandos de Shell inmediatamente después de la ejecución en el archivo .bash_history
Cuando se utiliza un shell bash, la biblioteca de historial recuerda todos los comandos ingresados. La biblioteca de historial realizará un seguimiento de cada comando que haya ingresado. Este es el valor predeterminado para la mayoría, si no para todos, los sistemas Linux. Sin embargo, los comandos que ingresa primero se almacenan temporalmente en una memoria interna y se escriben en su ~/.bash_history
solo después de que salga correctamente de su sesión de shell.
Dependiendo del uso del shell, esto puede causar algunos resultados no deseados. Por ejemplo, si su conexión a un host remoto se desconecta, su archivo de historial no se actualizará y, por lo tanto, perderá todos los comandos que ingresó anteriormente. Además, si bien sus comandos para una sesión se almacenan temporalmente en la memoria interna del sistema, no podrá acceder a ellos desde otra sesión de shell.
Utilice el siguiente comando de Linux para forzar a su shell a agregar cada comando ingresado durante una sesión de shell actual en el archivo ~/.bash_history
:
shell 1: $ history -a
Si desea que su historial se actualice y refleje los cambios de su archivo ~/.bash_history
, puede leer todos los comandos del historial desde el archivo ~/.bash_history
de la siguiente manera:
shell 2: $ history -r
Para realizar una modificación en su shell bash y así forzarlo a almacenar automáticamente cada comando en un archivo ~/.bash_history
inmediatamente después de la ejecución del comando, puede ingresar la siguiente línea en su ~/.bashrc archivo
:
declare PROMPT_COMMAND="history -a;history -r"
La línea anterior garantizará que su archivo de historial se agregue con el último comando ejecutado después de cada ejecución de comando history -a
. También se asegurará de que el contenido de su archivo de historial ~/.bash_history
sea leído y esté disponible para cualquier otro para cualquier sesión ya abierta por el mismo usuario. Tenga en cuenta que el último comando ejecutado dentro de una sesión solo estará disponible para sesiones diferentes solo después de la ejecución de un comando.