Не раз я случайно запускал несколько команд и загрязнял мою историю bash. Как мне закрыть свой терминал, не сохраняя мою историю Bash? Я использую Fedora.
Не раз я случайно запускал несколько команд и загрязнял мою историю bash. Как мне закрыть свой терминал, не сохраняя мою историю Bash? Я использую Fedora.
Ответы:
История вашей оболочки сохраняется в файле, указанном HISTFILE
переменной. Так:
unset HISTFILE
Это также относится к zsh, но не к ksh, который сохраняет данные в файл, указанный $HISTFILE
при запуске оболочки (и наоборот, вы решаете сохранить свою историю в ksh после запуска оболочки).
Краткий ответ:
Введите это в командной строке:
$ kill -9 $$
Это сразу же убьет вашу оболочку, и оболочка не сможет ничего сделать, например перехватить сигнал, сохранить историю, выполнить ~/.bash_logout
, предупредить о остановленных заданиях или что-то в этом роде.
Длинный ответ:
Примечание. Эти параметры не являются взаимоисключающими; все они могут быть использованы одновременно.
Опция 1:
Если вы перфекционист, когда дело доходит до загромождения файла истории, то вы можете изменить HISTIGNORE
переменную, включив в нее глобусы команд, которые вы не хотите записывать. Например, если вы добавляете HISTIGNORE='ls*:cd*'
в свой, ~/.bashrc
то любой экземпляр ls
и cd
не вставляете в свой файл истории.
Вариант 2:
Если вы хотите поочередно контролировать, какие команды будут исключены из вашей истории, вы можете указать, HISTCONTROL='ignorespace'
какие команды будут пропущены, начиная с пробела. Использование ignoreboth
также пропускает повторяющиеся строки. Затем, нажав пробел перед вводом команды, вы не увидите ее в файле истории.
Вариант 3:
Если вы просто хотите сделать так, чтобы при закрытии терминала оболочка немедленно выходила, вы можете trap
подать сигнал, который терминальная программа отправляет оболочку ( xterm
например, отправляет, SIGHUP
затем ждет, когда оболочка завершит работу) и выполнить выход без сохранения истории, когда она получает этот сигнал. Добавьте это к вашему ~/.bashrc
:
# don't record history when the window is closed
trap 'unset HISTFILE; exit' SIGHUP
kill -9
для чего-либо, кроме тяжелых ситуаций, когда все остальное потерпело неудачу.
Я удивлен, увидев, что никто не предложил history -c
сразу до exit
. IINM (я не эксперт), это будет хорошо.
history -r
перечитаете файл истории, поэтому сохранение станет невозможным.
Есть две переменные окружения, которые bash использует для определения файла истории и количества строк, которые нужно записать в него при выходе из оболочки.
Вы можете удалить историю вашего сеанса с помощью любого из них (установите во время сеанса, который вы хотите опустить в файле истории):
HISTFILE=/dev/null
или
HISTSIZE=0
Любой из этих вариантов отлично работает в 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
а затем a clear
, вы бы пошли так далеко, как видите в текущем окне, поскольку не будет никакого буфера прокрутки.
set HISTFILE
следующий раз войти в систему? (просто скажите, если это правильно или неправильно)