Kiedyś myślałem, że usunięcie mojej historii bashów było wystarczające, aby wyczyścić historię bashów, ale wczoraj mój kot bałaganił po prawej stronie klawiatury, a kiedy wróciłem do komputera, zobaczyłem coś, co napisałem miesiąc temu, a potem zacząłem naciśnij wszystkie klawisze jak szalony, szukając tego, co mogło to spowodować. Okazuje się, że klawisz UPARROW pokazuje moją historię bash nawet po usunięciu .bash_history.
Jak mogę naprawdę usunąć historię bash?
~/.bash_history
naprawdę powoduje usunięcie~/.bash_history
.... ale (chyba że podejmiesz kroki, aby temu zapobiec, takie jak wyczyszczenie historii w pamięci, uruchamiając sięhistory -c
tuż przed wylogowaniem, ustawieniemHISTFILE=/dev/null
lub po prostu zapisaniemunset
), bash po prostu zapisze swoją bieżącą historię po wyjściu . BTW,HISTSIZE
env var mówi bashowi, ile linii historii należy zachować w pamięci, iHISTFILESIZE
mówi bashowi maksymalną liczbę linii historii do zapisania. oba mogą być ustawione np~/.bashrc
. w twoim . PS: Twój kot zasługuje na drugą nagrodę za udzielenie ci cennej lekcji :)Odpowiedzi:
W niektórych przypadkach (niektóre wersje bash), wykonując:
Lub po prostu
Skasuje historię w pamięci (w górę iw dół strzałki nie będzie miało żadnych poleceń do listy), a następnie napisać , że do
$HISTFILE
pliku (jeżeli$HISTFILE
zostanie obcięty przez uruchomione wystąpienie bash).Czasami bash decyduje się nie obcinać
$HISTFILE
pliku, nawet jeślihistappend
opcja jest wyłączona i$HISFILEZIZE
ustawiona na 0.W takich przypadkach opcja nuke zawsze działa:
Spowoduje to wyczyszczenie listy historii poleceń zapisanych w pamięci i wszystkich poleceń uprzednio zapisanych do pliku. Zapewni to, że działająca powłoka nie ma zapisanej historii ani w pamięci, ani na dysku, jednak inne działające instancje bash (gdzie historia jest aktywna) mogą mieć pełną kopię poleceń odczytanych od
$HISTFILE
momentu uruchomienia bash (lubhistory -r
wykonania) .Jeśli wymagane jest również , aby do pliku historii nie było zapisywane nic innego (brak nowych poleceń) bieżącej sesji,
unset HISTFILE
uniemożliwi to takie logowanie.źródło
history -c && history -r
tej czynności zastąpiłoby bieżącą historię ręcznie zmodyfikowaną historią. W niektórych przypadkach może to być lepsze niż wyrzucenie całej historii.bash
ma historię sesji w pamięci, która jest zapisywana do pliku, jeśli zmienna powłokiHISTFILE
jest ustawiona na nazwę pliku podczasbash
wychodzenia.Jeśli usuniesz wskazany plik, usuniesz
HISTFILE
tę zmienną ibash
wyjdziesz, sesja powłoki nie pozostawi żadnej trwałej historii.Nieustawienie
HISTFILE
zmiennej, ale usunięcie pliku po prostu opróżniłoby trwałą historię, ale historia bieżącej sesji zostałaby zapisana po wyjściu powłoki.źródło
history -c; history -w
wyczyści zarówno pamięć, jak i historię plików. Wyłączenie HISTFILE jest wymagane tylko wtedy, gdy do historii nie powinny być rejestrowane żadne dalsze polecenia (nie dokładnie to, o co proszono IMhO).„Jak mogę naprawdę usunąć moją historię bashów?”
Wyjdź z bash, uruchom inną powłokę, usuń plik historii bash.
lub
wyloguj się, zaloguj się na inne konto, które ma uprawnienia do zapisu w pliku historii, usuń plik historii.
źródło
Opuszczając muszlę, zrób to wszystko za jednym razem, jak
źródło