Czy można otworzyć sesję incognito bash?
Na przykład, gdy musimy wprowadzić hasła w poleceniach i nie chcemy bashdodawać ich do historii.
secrectcommandnie będzie w historii bash.
Czy można otworzyć sesję incognito bash?
Na przykład, gdy musimy wprowadzić hasła w poleceniach i nie chcemy bashdodawać ich do historii.
secrectcommandnie będzie w historii bash.
Odpowiedzi:
Jeśli chcesz bashprzestać rejestrować swoje polecenia, po prostu wyłącz HISTFILEzmienną:
HISTFILE=
Wszystkie dalsze polecenia nie powinny być już logowane .bash_history.
Z drugiej strony, jeśli faktycznie podajesz hasła jako argumenty dla poleceń, już robisz coś złego. .bash_historynie jest czytelny na całym świecie i dlatego nie jest największym zagrożeniem w tej sytuacji:
psi /procsą dużym problemem. Wszyscy użytkownicy w systemie mogą zobaczyć polecenia, które aktualnie wykonujesz, wraz ze wszystkimi ich argumentami . Przekazywanie haseł jako argumentów wiersza poleceń jest zatem z natury niepewne . Użyj zmiennych środowiskowych lub plików konfiguracyjnych (które chmodded 600) do bezpiecznego dostarczania haseł.
unset HISTFILEma podobny efekt. Mam funkcję to: n() { HISTFILE=; PS1="~${PS1#\~}"; }. W ten sposób wyraźnie widzę, czy jestem w trybie incognito, czy nie.
HISTCONTROL=ignorespace
Jeśli ta opcja nie jest jeszcze ustawiona bash, może być właśnie tym, czego potrzebujesz. Jest mniej wyniszczający niż wyłączenie całej historii. Przy takim zestawie jakikolwiek wiersz poleceń zaczynający się od znaku spacji nie zostanie zapisany na liście historii.
Z tych powiązanych linków:
Dlaczego bash ma opcję HISTCONTROL = ignorowanie?
Dlaczego bash nie przechowuje poleceń rozpoczynających się spacjami?
Możesz tymczasowo wyłączyć historię: set +o history
set +o history
...
set -o history
Istnieje różnica między wyłączeniem historii a rozbrojeniem HISTFILE:
HISTFILE=
date
ls
HISTFILE=~/.bash_history
history
wypisuje coś takiego:
84 HISTFILE=
85 date
87 ls
88 HISTFILE=~/.bash_history
89 history
tzn. wszystkie polecenia są zapisywane na liście historii. Wpisz, exitaby go zapisać.
Ale
set +o history
date
ls
set -o history
history
wypisuje coś takiego:
115 set +o history
116 history
Podsumowanie :
set +o historyna długie sesje.
HISTCONTROLi <space>commandw innym czasie.
cat | bashuruchomi nieinteraktywnąbashbez pytania, edycję z wiersza poleceń (tylko wewnętrzny edytor dyscypliny) lub historię.