Не раз я случайно запускал несколько команд и загрязнял мою историю bash. Как мне закрыть свой терминал, не сохраняя мою историю Bash? Я использую Fedora.
bash
command-history
Михаил Мрозек
источник
источник
set HISTFILE
следующий раз войти в систему? (просто скажите, если это правильно или неправильно)Краткий ответ:
Введите это в командной строке:
Это сразу же убьет вашу оболочку, и оболочка не сможет ничего сделать, например перехватить сигнал, сохранить историю, выполнить
~/.bash_logout
, предупредить о остановленных заданиях или что-то в этом роде.Длинный ответ:
Примечание. Эти параметры не являются взаимоисключающими; все они могут быть использованы одновременно.
Опция 1:
Если вы перфекционист, когда дело доходит до загромождения файла истории, то вы можете изменить
HISTIGNORE
переменную, включив в нее глобусы команд, которые вы не хотите записывать. Например, если вы добавляетеHISTIGNORE='ls*:cd*'
в свой,~/.bashrc
то любой экземплярls
иcd
не вставляете в свой файл истории.Вариант 2:
Если вы хотите поочередно контролировать, какие команды будут исключены из вашей истории, вы можете указать,
HISTCONTROL='ignorespace'
какие команды будут пропущены, начиная с пробела. Использованиеignoreboth
также пропускает повторяющиеся строки. Затем, нажав пробел перед вводом команды, вы не увидите ее в файле истории.Вариант 3:
Если вы просто хотите сделать так, чтобы при закрытии терминала оболочка немедленно выходила, вы можете
trap
подать сигнал, который терминальная программа отправляет оболочку (xterm
например, отправляет,SIGHUP
затем ждет, когда оболочка завершит работу) и выполнить выход без сохранения истории, когда она получает этот сигнал. Добавьте это к вашему~/.bashrc
:источник
kill -9
для чего-либо, кроме тяжелых ситуаций, когда все остальное потерпело неудачу.Я удивлен, увидев, что никто не предложил
history -c
сразу доexit
. IINM (я не эксперт), это будет хорошо.источник
history -r
перечитаете файл истории, поэтому сохранение станет невозможным.Есть две переменные окружения, которые bash использует для определения файла истории и количества строк, которые нужно записать в него при выходе из оболочки.
Вы можете удалить историю вашего сеанса с помощью любого из них (установите во время сеанса, который вы хотите опустить в файле истории):
или
Любой из этих вариантов отлично работает в Bash на Fedora
источник
Не уверен, почему ты так заботишься о своей истории команд. Если вам часто нужны определенные команды, вам может быть веселее, если вы определите для них псевдонимы, чтобы вы могли вернуть их двумя нажатиями клавиш, а не искать их в истории.
источник
Эли уже дал вам правильный ответ для Bash, который нужно установить
HISTSIZE=0
.Я бы просто добавил метод, чтобы сделать это для экрана GNU . Нажмите
Ctrl+A
(последовательность выхода из экрана) и затем:scrollback 0
. Это удалит историю прокрутки. Теперь вы можете сразу же сделать:scrollback 15000
сброс буфера прокрутки назад.источник
screen(1)
?scrollback=0
же самоеCtrl+a H
ни другое неCtrl+a :clear
удалит историю. Вам нужноCtrl+a :scrollback 0
. Вы можете проверить это сами. Начните новый сеанс экрана. Теперь сделайcat /etc/passwd
. Теперь сделайте любое из вышеперечисленного -Ctrl+a H
илиCtrl+a :clear
. Теперь попробуйте выполнить копирование из экранного буфера, нажав на значок, аCtrl+a [
затем на стрелку вверх, чтобы увидеть, как далеко вы можете копировать. Если вы сделали a,Ctrl+a :scrollback
а затем aclear
, вы бы пошли так далеко, как видите в текущем окне, поскольку не будет никакого буфера прокрутки.