Я заметил, что при открытии .bash_history
, что он содержит только записи из моего предыдущего сеанса, кажется, что текущий сеанс добавляется только при выходе. Есть ли способ предотвратить сохранение текущей сессии? Даже сбой bash
является вариантом, если вы знаете, как это сделать. Я обнаружил, что могу kill -9
выполнить этот процесс, но если есть лучший способ, я бы с удовольствием узнал.
Не сохранять текущий сеанс bash в истории
Ответ 1
Возможно, более элегантным, чем сбой bash, будет использование команды history -c
для очистки истории текущего сеанса. Тогда нет ничего, что можно было бы сэкономить (даже вытирает себя из истории).
Ответ 2
Отсоедините переменную $HISTFILE
$ unset HISTFILE
Если HISTFILE не установлен, или если файл истории невозможен, история не сохраняется.
http://www.faqs.org/docs/bashman/bashref_106.html
Ответ 3
Существует еще один вариант, похожий на history -c
, но который не уничтожает ничего предшествующего текущему сеансу.
Это history -r
, который перезагружает историю из HISTFILE
, например, если вы только вошли в систему.
Я не знаю, работает ли это или существует в любой версии bash, предшествующей 4.3.11, но, хотя было бы полезно включить его в список.
Вот пример, показывающий разницу между этой командой и -c
one:
[email protected]:~$ # I Just logged in
[email protected]:~$ history | tail -n6 # this shows commands from the previous session, which ends at item 4682 as well as from the current one
4679 2014-08-23 17:15:29 # Previous session
4680 2014-08-23 17:15:33 # Still the previous session
4681 2014-08-23 17:15:37 # note the datetime
4682 2014-08-23 17:15:44 exit
4683 2014-08-23 17:17:25 # I Just logged in
4684 2014-08-23 17:19:54 history | tail -n6 # this shows the last command, and the ones from the previous session
[email protected]:~$ # This is a secret command, so I need to remove the traces of this session
[email protected]:~$ history -r
[email protected]:~$ history | tail -n5 # Note that I went back to item 4682, and there are no traces of history -r command
6242 2014-08-23 17:15:29 # Previous session
6243 2014-08-23 17:15:33 # Still the previous session
6244 2014-08-23 17:15:37 # note the datetime
6245 2014-08-23 17:15:44 exit
6246 2014-08-23 17:22:26 history | tail -n5 # Note that I went back to item 4682, and there are no traces of history -r command
[email protected]:~$ history -c # instead if I issue history -c
[email protected]:~$ history # everything disappears
5248 2014-08-23 17:23:13 history # everything disappears
[email protected]:~$
Ответ 4
Я знаю, что это старый поток. Просто хотел добавить это для завершения:
Если вы хотите, чтобы определенные команды не были сохранены, проверьте, установлена ли переменная HISTCONTROL: HISTCONTROL = ignoreboth или HISTCONTROL = ignorespace
Каждая команда, начинающаяся с ведущего пробела, не будет помещаться в историю.
Только мои 2 цента.
Ответ 5
Это должно сделать:
HISTFILE=
отключить HISTFILE.
Ответ 6
Для меня работает следующее.
export HISTFILE=/dev/null
Обратите внимание, что перед ним есть пробел. Большинство современных дистрибутивов не будут добавлять команды, которые вводятся после пробела в историю bash. Это предотвратит появление этой строки в вашей истории.