Cómo detener el historial de anexión de Bash

9

Tengo muchos problemas para configurar el historial de terminales de Bash de la manera que quiero. Me gustaría no tener entradas duplicadas y si ingreso un comando quiero que se guarde y se eliminen los duplicados anteriores.

El problema es que el historycomando me muestra que está funcionando de la manera que quiero, pero una vez que cierre sesión, los duplicados vuelven a aparecer. Creo que solo está agregando la historia a la existente. Tengo estas líneas en mi .bashrcarchivo:

HISTCONTROL=ignoreboth:erasedups
shopt -u histappend

Incluso he intentado descomentar shopt, pero todavía agrega el historial al cerrar sesión. ¿Cómo puedo hacer que el historial sea exactamente como es antes de cerrar sesión?

craig
fuente
2
Aquí hay una buena explicación: unix.stackexchange.com/questions/18212/…
jasonwryan

Respuestas:

7

El erasedupsdebe hacer lo que quiere en lo que respecta a los duplicados - Ten en cuenta que los duplicados de borrado se activa en el momento de añadir una nueva entrada a la historia y que borra todos los viejos ocurrencias de un comando, dejando sólo la más reciente.


Respondiendo a la pregunta " ¿Cómo puedo hacer que el historial sea exactamente como es antes de cerrar sesión? "

A mi modo de ver, esto puede ser útil solo de vez en cuando. (De lo contrario, ¿por qué usaría el historial?) Puede hacerlo emitiendo

history -c; history -r

Esto borra todas las entradas del historial que se mantienen actualmente en la memoria y luego vuelve a leer todo el historial del archivo de historial. Por lo tanto, se olvidan todos los comandos que emitió desde que inició sesión en la sesión de shell actual. Me resulta bastante útil en situaciones en las que hago muchas pruebas (muchos comandos similares, pero no realmente duplicados) y luego no quiero que mi historial se vea afectado por eso, así que tengo un alias para ello en mi .bashrc:

alias hrr='history -c; history -r'

( hrrpara ser recordado como "relectura de la historia").

rozcietrzewiacz
fuente