Bash-Befehlsverlauf funktioniert nicht

13

Der Befehlsverlauf zwischen Sitzungen wird nicht gespeichert. Ich benutze Guake und der Verlauf der Sitzung funktioniert einwandfrei.

Ich habe festgestellt, dass .bash_history einige Befehle enthält, die ich im sudo -sModus ausgeführt und erneut versucht habe, und dass alle Befehle während der Sitzung gespeichert wurden, also habe ich es versuchtchmod 777 .bash_history

Jetzt erscheinen die alten Befehle zu Beginn einer Sitzung, aber es werden keine neuen Befehle gespeichert

Vielen Dank im Voraus

v2r
quelle
2
Also ... was genau versuchst du zu erreichen? Sie scheinen hier keine Frage zu stellen: /
Thomas Ward
4
Der Modus 777 ist unnötig, er hat insbesondere nichts mit dem Flag 'ausführbar' zu tun (der Standardmodus ist 600). Das ~/.bash_historywird geschrieben, wenn Sie sich abmelden (um zu den neueren Befehlen zu gelangen, können Sie den historyBefehl verwenden). Aber ich sehe das Problem auch nicht ..
Onedinkenedi

Antworten:

15

Die Befehle sind nicht sichtbar, da Bash den Verlauf erst nach dem Beenden der Shell in der Datei .bash_history speichert, was bei Guake sehr selten vorkommt. Es gibt eine einfache Abhilfemaßnahme, mit der Bash den Verlauf nach jedem Befehl anhängt (anstatt die Datei zu überschreiben)

shopt -s histappend
PROMPT_COMMAND="history -a;$PROMPT_COMMAND"
Adam Byrtek
quelle
4
Einfach genial. Ich wünschte, ich hätte das vor 5 Jahren gewusst.
HDave
8

In Verbindung steht, dass dies normalerweise nicht funktioniert, wenn Sie einen Befehl sudo, bevor Sie eine .bash_history-Datei haben, da diese dann im Besitz von root und nicht von Ihrem Benutzer erstellt wird.

khamer
quelle
2

Es könnte auch sein, dass root: root Ihre .bash_history besitzt (ROOT SOLLTE NICHT DER BESITZER SEIN, IHR BENUTZER SOLLTE DER BESITZER SEIN!), In diesem Fall müssen Sie:

#chown user:user .bash_history

Dies könnte anscheinend passieren, wenn Sie sudo bashviel tun !

mahatmanich
quelle