En una Mac, Sierra.
No tengo HIST
configuraciones relacionadas que pueda ver:
~ @ Magni (jcollum)
$ env|grep HIST
~ @ Magni (jcollum)
$ cat ~/.bash_profile | grep HIST
~ @ Magni (jcollum)
Pero tengo cosas en mi historial que hice ayer que no están ahí después de reiniciar. Realmente dudo mucho que pusiera espacios antes del comando cada vez que lo hacía.
Sé que hay publicaciones aquí que me dicen cómo solucionarlo, pero me gustaría saberlo.por quésucede de esta manera.
Por ejemplo, cuando busqué un curl
archivo que ejecuté ayer, nada:
~ @ Magni (jcollum)
$ history | grep curl
166 curl -X POST -d [email protected] -d password=********** http://localhost:3000/login
503 hg curl
519 history | grep curl
¿Hace 400 comandos? Sé que lo he usado curl
una docena de veces durante la semana pasada, pero (y no uso bash lo suficiente como para ejecutar cientos de comandos esta semana).
Básicamente estoy perplejo y no sé por qué falta tanto de lo que hice. ¿Es posible que el historial solo se registre desde una instancia de bash?
Respuesta1
¿Es posible que el historial solo se registre desde una instancia de bash?
Eso es algo que está pasando. La forma en que funciona el historial en bash, a menos que hayas hecho todo lo posible para cambiarlo, es:
- Cuando se inicia bash, carga el historial guardado desde el archivo de historial.
- Cada vez que se ejecuta un comando, se agrega al historial en la memoria de bash.
- Cuando bash sale, guarda el historial acumulado en el archivo de historial.
Ahora supongamos que inicia dos instancias de bash. Ambos cargan el archivo histórico cuando comienzan. Ambos agregan los comandos que ejecutan a su propio historial. Cuando una instancia sale, guarda el historial anterior más sus propios comandos en el archivo de historial. Cuando la segunda instancia sale, guarda el historial anterior másespropio comando al archivo de historial y, al hacerlo, borra el historial de la primera instancia que salió.
El mecanismo de guardado del historial de Bash es demasiado simplista. Sus líneas de historial están a merced de todas las demás instancias en ejecución; la que salga en último lugar borra el historial de las demás. Las soluciones incluyen agregar el nuevo historial al archivo de historial en lugar de sobrescribir el archivo de historial con todo el historial en memoria, o agregar líneas al archivo de historial tan pronto como se ejecutan. VerPreservar el historial de bash en múltiples ventanas de terminalyPreservar el historial de bash en múltiples ventanas de terminalpara conocer algunas formas de implementar esta y otras variantes.
La solución más sencilla es ejecutar zsh, que guarda el historial de forma sensata de forma predeterminada. Recomiendo esto, especialmente porque estás ejecutando macOS que está atascado en una versión antigua de bash porque a Apple no le gusta la licencia de las versiones lanzadas desde 2009.