Czy można otworzyć sesję incognito bash
?
Na przykład, gdy musimy wprowadzić hasła w poleceniach i nie chcemy bash
dodawać ich do historii.
secrectcommand
nie 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 bash
dodawać ich do historii.
secrectcommand
nie będzie w historii bash.
Odpowiedzi:
Jeśli chcesz bash
przestać rejestrować swoje polecenia, po prostu wyłącz HISTFILE
zmienną:
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_history
nie jest czytelny na całym świecie i dlatego nie jest największym zagrożeniem w tej sytuacji:
ps
i /proc
są 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 HISTFILE
ma 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, exit
aby go zapisać.
Ale
set +o history
date
ls
set -o history
history
wypisuje coś takiego:
115 set +o history
116 history
Podsumowanie :
set +o history
na długie sesje.
HISTCONTROL
i <space>command
w innym czasie.
cat | bash
uruchomi nieinteraktywnąbash
bez pytania, edycję z wiersza poleceń (tylko wewnętrzny edytor dyscypliny) lub historię.