Bash perdita di storia quando si utilizza histappend

Mi piace mantenere un sacco di storia, quindi ho histappend impostato nel mio .bashrc . La maggior parte del tempo tutto funziona bene, con la storia costruita da molte conchiglie che si appendono. Tuttavia, each tanto, inizierò una nuova shell e scopro di aver perso l'intera storia – e spesso contiene solo alcuni dei comandi dall'ultima shell per uscire (cioè non è solo sovrascrivere invece di aggiungere ). A causa di ciò, sono sospetto che sta accadendo all'output della shell, piuttosto che da un altro process che uccide il file .bash_history . Sostenendo questa conclusione, ho i numbers di command della storia al mio prompt e non li ho mai visti saltare.

Qualcuno ha mai avuto un problema simile? O anche solo suggerimenti su come individuare il problema?

Mi spiace rispondere alla mia domanda, ma nessuna delle altre risposte affronta veramente il problema.

Ho finalmente capito che questo accade solo quando chiude il gnome-terminal stesso (es. File> exit, il button 'x', alt + F4) e anche in genere solo quando chiudi diversi terminali in rapida successione. Non succede mai quando si usa ctrl-D per chiudere la shell, lasciando che il terminal segua.

Se riesco a metterlo abbastanza bene, farò un report di bug terminal gnome. Nel frattempo, forse questo aiuterà altre persone che arrivano da google!

Non c'è idea di perché questo accada, ma forse puoi aggirare il problema forzando bash per scrivere nel file di cronologia each volta che visualizza un prompt:

 PROMPT_COMMAND="history -a; history -n" 

Questo scriverà (-a) e quindi rileva (-n) il file di cronologia each volta che bash esegue il prompt per il command successivo. Ulteriori vantaggi: otterrai il command X in shell 1 nella storia della shell 2.

La mia esperienza era che le shell aggiornarono il file di cronologia all'ora di output. Quindi la "storia" iniziale di una shell dipendeva dalla vista della shell più recente uscito dalla shell.

Il risultato di questo è che è ansible get comandi che arrivano e andare dalla cronologia, a seconda di come altri shell hanno iniziato e arrestato.

Ho visto questo accadere prima, ma è stato un problema con gli errori di disco che stavano avvenendo in frequenza crescente. Vorrei eseguire una scansione sull'unità. Se si scopre che l'unità è soddisfacente, verificherò se questo file non supera un limite di cronologia arbitrario.

Qualcosa che potrebbe essere in grado di mantenere questo da accadere sarebbe quello di mantenere il potare il file di nuovo a 80 righe o comunque molti comandi si desidera che la storia sia.