Раньше я думал, что удаления моей истории bash было достаточно, чтобы очистить мою историю bash, но вчера моя кошка бездельничала вокруг правой стороны моей клавиатуры, и когда я вернулся в свой компьютер, я увидел что-то, что я напечатал месяц назад, затем я начал нажмите все клавиши как сумасшедшие, ища то, что могло вызвать это. Оказывается, клавиша UPARROW показывает мою историю bash даже после удаления .bash_history.
Как я могу удалить мою историю Bash на самом деле?
~/.bash_history
действительно удаляет~/.bash_history
.... но (если вы не предпримете шаги, чтобы предотвратить это, например очистите историю в памяти, запустив ееhistory -c
непосредственно перед выходом из системы или установкойHISTFILE=/dev/null
или простоunset
добавив ее), bash просто сохранит свою текущую историю снова, когда выйдет . Кстати,HISTSIZE
env var сообщает bash, сколько строк истории следует сохранить в памяти, иHISTFILESIZE
сообщает bash максимальное количество сохраняемых строк истории. оба из них могут быть установлены, например, в вашем~/.bashrc
. PS: ваша кошка заслуживает 2-й награды за то, что преподнесла вам ценный урок :)Ответы:
В некоторых случаях (в некоторых версиях bash) выполните:
Или просто
Очистит историю в памяти (у стрелок вверх и вниз не будет команд для отображения в списке), а затем запишет это в
$HISTFILE
файл (если он$HISTFILE
усекается запущенным экземпляром bash).Иногда bash выбирает не обрезать
$HISTFILE
файл, даже еслиhistappend
опция не установлена и$HISFILEZIZE
установлена в 0.В таких случаях опция nuke всегда работает:
Это очистит список истории команд, записанных в памяти, и всех команд, ранее записанных в файл. Это обеспечит отсутствие в запущенной оболочке записанной истории ни в памяти, ни на диске, однако другие запущенные экземпляры bash (где активна история) могут иметь полную копию команд, считанных с
$HISTFILE
момента запуска bash (или когдаhistory -r
выполняется a ) ,Если также требуется, чтобы ничто другое (без новых команд) текущего сеанса было записано в файл истории, то
unset HISTFILE
это предотвратит любую такую регистрацию.источник
history -c && history -r
заменит вашу текущую историю вручную измененной историей. В некоторых случаях это может быть лучше, чем выбрасывать всю историю.bash
имеет историю сеанса в памяти, которая записывается в файл, если для переменной оболочкиHISTFILE
задано имя файла приbash
выходе.Если вы удалите файл, на который указывает указатель, удалите
HISTFILE
эту переменную иbash
выйдете, этот сеанс оболочки не оставит никакой постоянной истории.Если не сбросить
HISTFILE
переменную, а удалить файл, то будет просто очищена постоянная история, но история текущей сессии будет сохранена при выходе из оболочки.источник
history -c; history -w
очистит память и историю файлов. Отключение HISTFILE требуется только в том случае, если в историю не нужно записывать дальнейшие команды (не совсем то, что было задано IMhO)."Как я могу удалить мою историю bash на самом деле?"
Выйдите из bash, запустите другую оболочку, удалите файл истории bash.
или
Выйдите из системы, войдите в другую учетную запись с правами на запись в файл истории, удалите файл истории.
источник
Оставляя оболочку, делайте все за один раз, как
источник