Historia poleceń Bash nie działa

13

Historia poleceń między sesjami nie jest zapisywana. Używam guake, a historia sesji działa dobrze.

Zauważyłem, że .bash_history ma kilka poleceń, które wykonałem w sudo -strybie i spróbowałem tego samego ponownie, a wszystkie polecenia podczas sesji zostały zapisane, więc spróbowałemchmod 777 .bash_history

Teraz stare polecenia pojawiają się na początku sesji, ale nowe polecenia nie są zapisywane

Z góry dziękuję

v2r
źródło
2
Więc ... co dokładnie próbujesz osiągnąć?
Thomas Ward
4
Tryb 777 jest niepotrzebny, nie ma w szczególności nic wspólnego z flagą „wykonywalną” (tryb domyślny to 600). ~/.bash_historyZostanie napisany po wylogowaniu (aby dotrzeć do nowszych poleceń, można użyć historypolecenia). Ale nie widzę też problemu ...
Onedinkenedi,

Odpowiedzi:

16

Polecenia nie są widoczne, ponieważ Bash zapisuje historię w pliku .bash_history dopiero po zamknięciu powłoki, co zdarza się bardzo rzadko w przypadku Guake'a. Istnieje proste obejście problemu, dzięki któremu Bash dołącza historię (zamiast nadpisywania pliku) po każdym poleceniu

shopt -s histappend
PROMPT_COMMAND="history -a;$PROMPT_COMMAND"
Adam Byrtek
źródło
4
Czysto niesamowite. Chciałbym wiedzieć o tym 5 lat temu.
HDave
8

Powiązane, zazwyczaj to się psuje, jeśli sudo wyda polecenie przed utworzeniem pliku .bash_history, ponieważ wtedy zostanie utworzony jako własność root zamiast użytkownika.

khamer
źródło
2

Może to być również ten root: root jest właścicielem twojej .bash_history (ROOT NIE POWINIEN BYĆ WŁAŚCICIELEM, TWÓJ UŻYTKOWNIK POWINIEN BYĆ WŁAŚCICIELEM!), W takim przypadku musisz:

#chown user:user .bash_history

To może się zdarzyć, jeśli zrobisz sudo bashdużo!

mahatmanich
źródło