Chcę, aby mój .bash_history
plik był nieograniczony. np. Więc zawsze mogę wrócić i zobaczyć, jak coś zbudowałem / skonfigurowałem, czym było to fajne polecenie lub jak jakieś polecenie złamało się kilka tygodni temu. Jak mogę zmienić to ustawienie?
Chcę, aby mój .bash_history
plik był nieograniczony. np. Więc zawsze mogę wrócić i zobaczyć, jak coś zbudowałem / skonfigurowałem, czym było to fajne polecenie lub jak jakieś polecenie złamało się kilka tygodni temu. Jak mogę zmienić to ustawienie?
Odpowiedzi:
Ustaw HISTSIZE
i HISTFILESIZE
w .bashrc na pusty ciąg:
HISTSIZE=
HISTFILESIZE=
W wersji bash 4.3 i nowszych możesz także użyć HISTSIZE=-1 HISTFILESIZE=-1
:
n. Setting HISTSIZE to a value less than zero causes the history list to be
unlimited (setting it 0 zero disables the history list).
o. Setting HISTFILESIZE to a value less than zero causes the history file size
to be unlimited (setting it to 0 causes the history file to be truncated
to zero size).
HISTSIZE= HISTFILESIZE=
powoduje całkowite wyłączenie historii bash, przynajmniej dla mnie.
HISTSIZE=-1 HISTFILESIZE=-1
wyłączyło moją historię, podczas gdy załatwiło sprawę HISTSIZE= HISTFILESIZE=
. CentOS 7 tutaj.
HISTSIZE= HISTFILESIZE=
powinieneśexport HISTSIZE=
export HISTFILESIZE=
Po wielu dużych, brzydkich iteracjach i dziwnych przypadkach na przestrzeni lat, teraz mam zwięzłą sekcję mojego .bashrc poświęconą temu.
Najpierw musisz skomentować lub usunąć tę sekcję .bashrc (domyślnie dla Ubuntu). Jeśli tego nie zrobisz, niektóre środowiska (takie jak uruchamianie screen
sesji) nadal będą obcinać Twoją historię:
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
# HISTSIZE=1000
# HISTFILESIZE=2000
Po drugie, dodaj to na dole swojego .bashrc:
# Eternal bash history.
# ---------------------
# Undocumented feature which sets the size to "unlimited".
# http://stackoverflow.com/questions/9457233/unlimited-bash-history
export HISTFILESIZE=
export HISTSIZE=
export HISTTIMEFORMAT="[%F %T] "
# Change the file location because certain bash sessions truncate .bash_history file upon close.
# http://superuser.com/questions/575479/bash-history-truncated-to-500-lines-on-each-login
export HISTFILE=~/.bash_eternal_history
# Force prompt to write history after every command.
# http://superuser.com/questions/20900/bash-history-loss
PROMPT_COMMAND="history -a; $PROMPT_COMMAND"
Uwaga: każde polecenie jest zapisywane natychmiast po uruchomieniu, więc jeśli przypadkowo wkleisz hasło, nie możesz po prostu „zabić -9 %%”, aby uniknąć zapisu historii, musisz je usunąć ręcznie.
Pamiętaj również, że każda sesja bash załaduje pełny plik historii do pamięci, ale nawet jeśli Twój plik historii powiększy się do 10 MB (co zajmie dużo czasu), nie zauważysz dużego wpływu na czas uruchamiania basha.
HISTFILESIZE=
i HISTSIZE=
puste zamiast -1 i upewnij się, że nie masz innych deklaracji tych parametrów w .bashrc lub .bash_profile lub .profile.
.bashrc
, miałem tę konfigurację później na innym pliku załadowanym przez .bashrc ..., teraz działa! dzięki!
cat ~/.bash_history >>~/.bash_eternal_history
HISTFILESIZE
(i ewentualnie HISTSIZE
) przyniesie natychmiastowy skutek .
Jak wspomniano powyżej Jörg Beyer HISTSIZE
i HISTFILESIZE
są kluczowe.
Ponadto zdecydowanie powinieneś sprawdzić zmienną środowiskową HISTCONTROL
, która pozwala robić fajne rzeczy, takie jak nie przechowywać zduplikowanych poleceń historii ( HISTCONTROL=erasedups
). Nie ma sensu mieć nieograniczonej historii, jeśli musisz przeglądać setki linii cd ..
lub tym podobnych.
Linki: tutaj i praca z historią bash . Warto również przejrzeć często zadawane pytania dotyczące zmiennych bash .
Ctrl-r
Niektóre Ctrl-o
Ctrl-o
Ctrl-o
Ctrl-o
. Dlatego przechowuję duplikaty w historii.
Ctrl-o
?
Ctrl-o
uruchamia polecenie w wierszu polecenia i natychmiast wyświetla polecenie zaraz po poprzednim w historii. Jedną z korzyści jest to, że po użyciu Ctrl-r
do znalezienia starego polecenia (być może za pomocą strzałki w górę i w dół, aby przejść do sąsiednich poleceń w historii), wystarczy przytrzymać Ctrl
naciśnięty i nacisnąć o
kilkakrotnie, aby ponownie uruchomić poprzednią serię poleceń, nawet w nieskończonej pętli Jeśli chcesz. Zobacz także GNU Readline - Wikipedia
Istnieją (przynajmniej) dwa odpowiednie zmienne środowiskowe:
Myślę, że możemy się zgodzić, że termin nieograniczony jest często taki sam, jak bardzo duży (czy masz nieograniczoną ilość miejsca na pliki?). Więc po prostu ustaw wartości bardzo duże.