Czy istnieje sposób na tymczasowe zawieszenie śledzenia historii w bash, aby wejść w tryb „incognito”? Wchodzę do mojego terminalu rzeczy, których nie chcę nagrywać, poufne informacje finansowe.
bash
command-history
Naftuli Kay
źródło
źródło
HISTFILE
jest sprawdzana tylko po wyjściu basha, więc pierwsza metoda nie działa tak jak jest (jeśli przywrócisz wartość, polecenie zostanie zapisane).set +o history
działa zgodnie z zaleceniami.set +o history
iset -o history
przełączać się tam iz powrotem, gdy będę robił tajne rzeczy;)unset HISTFILE
nie działa.set -/+o history
działa jak marzenie! dziękiUżywając bash, ustaw
HISTCONTROL="ignorespace"
i poprzedzaj spacją dowolne polecenie, którego nie chcesz zapisywać w historii. W przypadku zapomnienia o podjęciu jakichkolwiek działań można równieżhistory -d <number>
usunąć konkretny wpis lubhistory -c
wyczyścić całą historię poleceń.źródło
Upewnij się, że
HISTCONTROL
zawieraignorespace
. Prawdopodobnie będziesz chciał dodaćHISTCONTROL=ignorespace
(HISTCONTROL=ignoredups:ignorespace
lub coś) do swojego~/.bashrc
. Następnie dowolny wiersz polecenia rozpoczynający się spacją jest pomijany w historii.Inną możliwością jest rozpoczęcie nowej sesji bash, która nie zapisuje historii.
źródło
Jeśli chcesz uniknąć przechowywania kilku poleceń, a nadal chcesz użyć strzałki w górę, aby uzyskać dostęp do poprzednich poleceń, użyj:
Istnieją cztery sposoby (poziomy) kontrolowania sposobu przechowywania poleceń.
Pierwszym i najprostszym jest użycie
ignorespace
(lub zignorowanie obu):Umożliwi to użycie spacji przed poleceniami, których chcesz uniknąć zapisywania na liście pamięci
history
. W konsekwencji, ponieważ w pamięci nie ma zapisanego polecenia, które można by wysłać do pliku, uniknie także wysłania jednego polecenia do pliku wymienionego w$HISFILE
.Unikaj nagrywania poleceń do pliku w
$HISTFILE
:Null
HISTFILE=''
i / lub ustawione naHISTFILE=/dev/null
działanie z tym samym efektem. Dowiedz się, że polecenia są nadal zapisywane na liście pamięci, wypróbujhistory
polecenie lub strzałkę w górę.Ostrzeżenie: jeśli HISTFILE zostanie zresetowany przed istnieniem powłoki, wszystko, co zostało zapisane w pamięci, może zostać zapisane w pliku.
Unikaj zapisywania nowych poleceń na liście historii w pamięci. Ponieważ nie ma go w pamięci, nie można go zapisać do pliku.
Ponownie włącz za pomocą
shopt -os history
(lubset -o history
)Usuń wszystkie polecenia z listy historii w pamięci:
Wszystkie polecenia są usuwane (z pamięci) i dlatego nic nie może być zapisane do pliku, dopóki zmienna nie zostanie ponownie ustawiona na pewną prawidłową wartość liczbową.
źródło
man history
nie będzie go wyciąć dla większości z nas.HISTIGNORE
, którejsubsumes
funkcjiHISTCONTROL
.LESS=+'/^ *HISTI' man bash
(czy to nie są „strony podręcznika”?). @NathanBasaneseJest jeden prosty sposób na wyłączenie historii, więc polecenia nie będą przechowywane w
.bash_history
pliku.Musisz umieścić spację lub tabulator przed dowolnym poleceniem, aby polecenie nie zostało zapisane w historii. Na przykład:
pwd
Komenda nie dostanie sklep w historii, ponieważ ma spacje z przodu.źródło
To mój sposób na goto. Na wypadek, gdyby rozbrojony HISTORY / HISTFILE / HISTCONTROL itp. Nie działa, eksportowanie go do / dev / null zawsze działało dla mnie.
źródło
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin16)