La cronologia dei comandi Bash non funziona


13

La cronologia dei comandi tra le sessioni non viene salvata. Sto usando Guake e la cronologia della sessione sta funzionando bene.

Ho notato che .bash_history aveva alcuni comandi che ho eseguito in sudo -smodalità e ho provato di nuovo lo stesso e tutti i comandi durante la sessione sono stati salvati, quindi ho provatochmod 777 .bash_history

Ora i vecchi comandi vengono visualizzati all'inizio di una sessione ma non vengono salvati nuovi comandi

Grazie in anticipo


2
Quindi ... cosa stai esattamente cercando di realizzare? Non sembra che tu stia facendo una domanda qui: /
Thomas Ward

4
La modalità 777 non è necessaria, in particolare non ha nulla a che fare con il flag "eseguibile" (la modalità predefinita è 600). Il ~/.bash_historyottiene scritto quando si accede fuori (per raggiungere i più recenti comandi che è possibile utilizzare il historycomando). Ma non riesco a vedere anche il problema ..
Onedinkenedi

Risposte:


16

I comandi non sono visibili perché Bash salva la cronologia nel file .bash_history solo dopo l'uscita dalla shell, e ciò accade molto raramente con Guake. Esiste una semplice soluzione per rendere Bash accodare la cronologia (anziché sovrascrivere il file) dopo ogni comando

shopt -s histappend
PROMPT_COMMAND="history -a;$PROMPT_COMMAND"

4
Fantastico. Avrei voluto saperlo 5 anni fa.
HDave

8

Correlato, in genere viene risolto il problema se si esegue un comando sudo prima di disporre di un file .bash_history, poiché verrà creato di proprietà di root anziché dell'utente.



2

Potrebbe anche essere quel root: root possiede il tuo .bash_history (ROOT DOVREBBE ESSERE IL PROPRIETARIO, IL TUO UTENTE DOVREBBE ESSERE IL PROPRIETARIO!), In tal caso devi:

#chown user:user .bash_history

Questo a quanto pare potrebbe succedere se lo fai sudo bashmolto!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.