Czy plik historii bash ma maksymalny rozmiar?

Odpowiedzi:

15

Zamiast określać liczby, możesz to zrobić

unset HISTSIZE 
unset HISTFILESIZE
shopt -s histappend

w takim przypadku limitem jest tylko rozmiar dysku (i „największy limit plików”, jeśli ma go system operacyjny lub FS).

Należy jednak pamiętać, że w końcu będzie to coraz bardziej spowalniać bash. zobacz ten dokument BashFAQ i artykuł na temat administracji Debiana (oryginalny link umarł, spójrz w lustro: archive.is i archive.org ), aby znaleźć techniki, które lepiej skalują się .

Philomath
źródło
Być może będziesz musiał zwiększyć history-sizeswoje inputrc.
Chris Down,
Ostrzeżenie: jak wspomniano [ unix.stackexchange.com/a/76129/78713](below) , może to spowodować, że Bash odziedziczy wartości domyślne i, jeśli twój .bash_historyjest większy niż te, obetnie go.
Chris Povirk
8

Możesz użyć logrotate, aby zachować stare wpisy. Pozwala na przykład ustawić limity rozmiaru, które będą wyzwalać archiwizację. Zwykle jest uruchamiany z codziennej pracy z kronikami, ale równie dobrze możesz wywołać go ze .bash_logoutskryptu.

rozcietrzewiacz
źródło
Wydaje mi się to najbardziej zrównoważonym podejściem, ponieważ usunięcie limitów wielkości będzie miało w dłuższej perspektywie wpływ na wydajność. Chociaż nie jestem pewien, że w najbliższym czasie osiągnę próg, obawiam się, że zajęłoby to trochę czasu, aby zauważyć takie skutki. Przy okazji rozważ dodanie skonfigurowanej konfiguracji i opcjonalne polecenie wylogowania bash, aby dodać.
Balmipour
Link nie działa. Może edytuj, aby wskazać inny link z tymi samymi zamierzonymi informacjami?
Dr Beco,
7

@Philomath, rozbrajanie tych wariacji środowiska wcale mi nie działa! Dla mnie powoduje to, że bash używa wbudowanych domyślnych (jak się wydaje) skracania .bash_history do około 9KiB.

W moim .bashrc działa następujące działanie:

export HISTSIZE=
export HISTFILESIZE=
shopt -s histappend
zenaan
źródło