regularnie zapisuj historię bash

9

Mam bash skonfigurowany do zapisywania historii, do pliku. Robi to za każdym razem, gdy bash kończy się [poprawnie]. Ponieważ czasami bash nie kończy się poprawnie, historia zostaje utracona.

Pytanie brzmi: czy mogę ustawić bash, aby regularnie zapisywać historię?


Używam Debian Gnu (wersja 6, Squeeze) z jądrem Linuksa.

wersja bash: GNU bash, wersja 4.1.5 (1) -release (i486-pc-linux-gnu)

ctrl-alt-delor
źródło

Odpowiedzi:

8

zapisz to w swoim bash_profile lub bashrc

shopt -s histappend

PROMPT_COMMAND="history -a;$PROMPT_COMMAND"

d4v3y0rk
źródło
Czy to wciąż ważna odpowiedź? W moim systemie jest wpis shopt -s histappendpod /etc/bash/bashrc. Jednak każde nieczyste wyjście z uruchomionych powłok traci historię wiersza poleceń.
Nikos Alexandris
-1

Możliwe, że Twój $ HISTFILE jest własnością root. Zakładając, że używasz bash jako powłoki logowania. Oto jak sprawdzić:

$ [ -z $HISTFILE ] && echo need to set HISTFILE || ls -l $HISTFILE
-rw------- 1 root root 36639 May 21 19:48 /home/joeb/.bash_history

Domyślną wartością HISTFILE powinna być ~ / .bash_history, jeśli zobaczysz błąd „musisz ustawić HISTFILE” lub jeśli $ HISTFILE nie jest ~ / .bash_history, powinieneś sprawdzić ~ / .profile lub ~ / .bash_profile lub ~ /. bashrc, aby upewnić się, że nie jest ustawiony lub resetowany niepoprawnie.

Zwykle jest własnością roota, więc po prostu zresetuj:

$ chown joeb.joeb $HISTFILE
$ ll $HISTFILE
-rw------- 1 joeb joeb 36639 May 21 19:48 /home/joeb/.bash_history

Wyloguj się, a następnie zaloguj.

$ history

Powinien pokazywać ostatni zestaw poleceń wprowadzonych zanim plik był własnością root, a następnie polecenia wprowadzone po zmianie właściciela pliku.

focused4success
źródło
3
Ponieważ OP mówi, że historia jest zapisywana, gdy bash kończy się normalnie, jego problem nie ma nic wspólnego z uprawnieniami. Być może twoja odpowiedź może być przydatna dla kogoś, kto ma problemy z historią bash.
Dmitrij Grigoriew