En modo gui, cuando un usuario tiene más de un terminal abierto, ¿cómo reescriben los terminales el archivo de historial de ese usuario? la razón por la que pregunto es porque, es muy posible que en cada uno de los terminales el usuario acabe ejecutando diferentes comandos. Entonces, ¿el historial termina guardando los comandos de todos los terminales o solo del primero que se abre? ¿O hay algún otro tipo de esquema que se emplee para abordar esta situación?
Respuesta aceptada:
Depende completamente de cómo el shell decida manejarlo
bash
de forma predeterminada, sobrescribirá el archivo de historial con el historial local de cada shell a medida que sale, por lo que gana el último shell en salir. El histappend
hará que se agregue al historial maestro en su lugar (shopt -s histappend
).
zsh
hace lo mismo de forma predeterminada y tiene algunas opciones para solucionarlo:
appendhistory
— El historial de cada shell se adjunta al archivo de historial principal cuando el shell saleincappendhistory
— El archivo de historial maestro se actualiza cada vez que se ejecuta una línea en cualquier shell, en lugar de esperar hasta que ese shell salgasharehistory
— Me gustaincappendhistory
, pero también extrae los cambios del archivo de historial maestro en todos los shells en ejecución, por lo que puede ejecutar un comando en un shell y luego presionar Arriba en otro caparazón y verlo