Не раз я випадково запускав ряд команд і забруднював свою історію баш. Як закрити свій термінал, не зберігаючи історію баш? Я використовую Fedora.
Не раз я випадково запускав ряд команд і забруднював свою історію баш. Як закрити свій термінал, не зберігаючи історію баш? Я використовую 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 [потім стрілку вгору, щоб перейти вгору і побачити, як далеко ви можете піти на копіювання. Якщо ви зробили Ctrl+a :scrollbackнаступний a clear, ви б пішли лише далеко, як ви можете бачити в поточному вікні, оскільки не буде жодного буфера прокрутки.
set HISTFILEнаступного разу ввійти? (просто скажіть, чи це правильно чи неправильно)