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ń.
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. * /
Odpowiedzi:
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):
To powinno załatwić sprawę:
A także to (jeśli czujesz się wyzywający):
Mam nadzieję że to pomoże.
źródło