Z bash
můžete odstranit pouze problematický řádek místo vymazání celé historie. Jednoduše odstraňte řádek pomocí -d
flag, pak uložte (zapište) novou historii pomocí -w
příznak:
$ history
351 ssh [email protected]
352 my_password
$ history -d 352
$ history -w
Má to dvě části:
bash
ukládá historii do souboru~/.bash_history
který je ve výchozím nastavení zapsán na konci relacehistory
který se uchovává v paměti
Chcete-li být v bezpečí, musíte jej vymazat z relace:
history -c
a podle potřeby zkrátit soubor historie:
> ~/.bash_history
Pokud je vaše relace, ve které jste zadali heslo, stále otevřená, pak jiný způsob, jak zakrýt trasování je nastavit HISTFILE
proměnnou na null zařízení, aby se historie nezapisovala do ~/.bash_history
při ukončení relace:
export HISTFILE=/dev/null
Vzhledem k tomu, že bash (alespoň všechny historické a současné verze, o kterých vím) automaticky neukládá historii, dokud neukončíte, obecně použitelnou strategií, když zadáte příkaz, který chcete zajistit, že se nikdy neuloží, je okamžitě napsat:
kill -9 $$
Toto ukončí shell pomocí SIGKILL
, který nelze chytit, takže shell nemá žádný způsob, jak při výstupu něco zachránit.
Většina ostatních přístupů zahrnuje scrubbing po faktu (tj. poté, co data již dorazila na disk), což má mnohem větší šanci na chybu (chybějící kopie), zvláště pokud systém používá btrfs nebo podobně.