Yo uso múltiples terminales Konsole. Y quiero que todos los comandos que escribo en cada terminal se guarden en el historial de comandos, para que el próximo konsole que abra tenga todos ellos. Para evitar que cada terminal sobreescriba el historial de comandos de la otra terminal, proporcioné la siguiente configuración en mi.bashrc
# avoid duplicates and commands starting with space
export HISTCONTROL=ignoredups:erasedups:ignorespace
# append history entries..
shopt -s histappend
#My machine reboots without warning sometimes.Hence to save commands instantaneously.
export PROMPT_COMMAND="history -a"
export HISTSIZE=1000
PS1="\[\e[1;34m\]\! \[\e[0m\]"$PS1
Di la última línea para ver el número de comando en mi solicitud. El comando no. nunca ha superado los 600, pero aún algunos de mis viejos comandos están desapareciendo de la historia. Hay muchos comandos que se dan repetidamente, pero como era de esperar ignoredups
, nunca aumenta el comando no en el indicador. Sin embargo, los comandos antiguos aún están desapareciendo, y el número de comandos en el historial siempre permanece un poco más de 500.
El .bash_history
archivo todavía contiene muchos duplicados a pesar de las ignoraciones.
PD: La salida de echo $HISTSIZE
y $HISTFILESIZE
ambos son=1000
Actualización: Encontré el problema en la entrada anterior a .bashrc
. Sólo llamaba history -a
en PROMPT_COMMAND
simplemente añade el último nuevo comando a la .bash_history. Entonces el ignoredups
y erasedups
no tiene ningún efecto.
¿Hay alguna manera de que todavía pueda escribir en .bash_history sin duplicados desde cada terminal? No quiero cargar todo el historial en cada símbolo del sistema history -r
y volver a escribirlo de nuevo history -w
, porque los comandos que emití en un terminal también aparecerán en otro terminal en ejecución paralela. Quiero que los comandos combinados aparezcan solo en una nueva terminal.
El enigma, por qué mi historia se estaba recortando a 500 está resuelto. Me di cuenta de que sucedía cada vez que entraba en esta máquina. Crear un .bash_profile
con la siguiente entrada resolvió este problema.
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
Ahora mi .bashrc se ejecuta cada vez que ssh también. Y el tamaño del archivo de historial ahora está aumentando monotónicamente.
bug-bash
lista de correo un año después de que se publicó esta pregunta: lists.gnu.org/archive/html/bug-bash/2013-07/msg00092.html