Jak uzyskać nieskończoną historię poleceń w bashu?

52

ustawiłem export HISTSIZE=99999999999999 ale czy to najlepszy sposób? Nie wiem, czy może wystąpić przepełnienie. Szukam sprawdzonego, niezawodnego sposobu na usunięcie ograniczeń historii poleceń.

user55542
źródło
nie ma wbudowanego mechanizmu, który by to zrobił.
Komentuję tylko po to, żeby na to odpowiedzieć, wiedziałbym też !!
2
debian-administration.org/articles/543 może być lepsza odpowiedź. Przynajmniej obsługuje większe wartości nieskończoności niż rozwiązanie na superużytkowniku. :-)
Prawdopodobnie w praktyce obniżysz to do 9999 (lub nawet 999; używam 1000). Nigdy nie znalazłem historii, która byłaby większa niż około 1000, aby była przydatna. Jeśli chcę odzyskać polecenie, aby przekształcić je w skrypt, zwykle robię to dobrze w tysiącu poleceń. W przeciwnym razie może się udać i nic się nie stanie.
Jonathan Leffler
@JonathanLeffler: Mój ma 1300 linii i jest tak mały, jak tylko mogę. Ctrl-R jest bardzo przydatny.
l0b0

Odpowiedzi:

66

w rzeczy samej nie (dobrze) udokumentowane i przypuszczam, że 99% użytkowników bash na tej planowanej ustawi HISTSIZE na bardzo dużą liczbę.

W historii GNU bash jest obsługiwana przez potężną bibliotekę readline. Biblioteka ma możliwość ograniczenia rozmiaru historii („stłumić” w żargonie readline) lub nie, a bash po prostu ustawia historię readline na stłumioną / niestłumioną. Jeśli zajrzysz do np. GNU bash wersja 4.2, plik variables.c, linia 4443, funkcja void sv_histsize (char *) znajdziesz ten komentarz (i całą duszną / niestabilną funkcję w następującej funkcji):

/ * Co zrobić po zmianie zmiennych HISTSIZE lub HISTFILESIZE.
Jeśli istnieje wartość tego HISTSIZE (i jest to wartość liczbowa), to stłumienie   Historia. W przeciwnym razie, jeśli nie ma wartości dla tej zmiennej,
niezmieniona historia. Nazwa to HISTFILESIZE, a jej wartość to
numeryczny, skróć plik historii, aby nie zawierał więcej niż wiele
kwestia. * /

To powinno załatwić sprawę:

export HISTSIZE=""

A także to (jeśli czujesz się wyzywający):

export HISTSIZE="GOTCHA"

Mam nadzieję że to pomoże.


źródło
2
Niech Tux cię pobłogosławi :)
meeDamian
15
Proponuję: eksport HISTSIZE = "INFINITE"
AmanicA