Не раз я случайно запускал несколько команд и загрязнял мою историю 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следующий раз войти в систему? (просто скажите, если это правильно или неправильно)