Odpowiedź:
Wszystko, co musisz zrobić, to ustawić HISTSIZE
w swoim profilu bash ( ~/.bash_profile
). Możesz pozostawić HISTFILESIZE
nieuzbrojony . Spowoduje to skonfigurowanie zarówno historii w pamięci, jak i historii opartej na plikach.
# Saves 10 million lines in memory and in the bash history file.
HISTSIZE=10000000
Wyjaśnienie, dodatkowe informacje.
Problem polega na tym, że HISTFILESIZE ustawia maksymalną historię zapisaną w pliku podczas uruchamiania sesji. HISTSIZE określa, ile linii zostanie zapisanych na koniec sesji. Jeśli HISTFILESIZE jest większy niż HISTSIZE, nigdy nie zobaczysz więcej niż HISTSIZE, ponieważ plik jest zastępowany poleceniami HISTSIZE ( chyba że ustawisz dołączanie historii, ale jest to osobny temat: wyszukaj histappend
w tym celu wbudowane polecenia powłoki ) .
To jest powód, dla którego nie widzisz żadnego efektu. Przy domyślnym HISTSIZE (prawdopodobnie 500) plik historii jest zawsze zastępowany najnowszymi poleceniami $ HISTSIZE. Wszystko, co jest starsze (które mogłoby potencjalnie powiększyć listę po $ HISTSIZE), jest usuwane.
W większości przypadków nie ma potrzeby ustawiania HISTFILESIZE niezależnie od HISTSIZE.
HISTSIZE określa, ile wierszy zostanie zapisanych w pliku historii. Lista poleceń jest obcinana przy wyjściu, przed zapisaniem do pliku historii, zachowując N najnowszych wierszy. Domyślnie ta lista zastępuje plik historii.
HISTFILESIZE określa, jak duży może być plik historii (w wierszach). Plik zostaje obcięty podczas uruchamiania, zachowując N najnowszych linii. Ponadto plik historii jest potencjalnie obcinany za każdym razem, gdy ustawiony jest HISTFILESIZE.
Wreszcie, chociaż wydaje się, że jest to nieudokumentowane, BASH ustawia HISTFILESIZE na podstawie HISTSIZE, jeśli HISTSIZE jest ustawiony podczas uruchamiania. Wypróbowałem to na macOS i kilku odmianach Ubuntu, a zachowanie jest spójne. Jeśli ustawisz HISTSIZE w pliku uruchomieniowym ( w żadnym wypadku nie poprzez wiersz poleceń), HISTFILESIZE zostanie ustawiony tak, aby pasował. (Spróbuj sam: ustaw HISTSIZE na jakąś arbitarnie dużą wartość w .bash_profile, wyjdź i uruchom nowy terminal, a wtedy echo $HISTSIZE $HISTFILESIZE
znajdziesz je pasujące.)
W związku z tym nie ma powodu, aby dotykać HISTFILESIZE, chyba że chcesz mieć inne wartości, a przypadki użycia mające różne wartości są rzadkie (i zazwyczaj wymagają więcej ustawień dostosowywania historii, aby uzyskać coś użytecznego).