Чи є спосіб тимчасово призупинити відстеження історії в bash, щоб увійти до свого роду "інкогніто"? Я ввожу в свій термінал речі, які не хочу записувати, чутливу фінансову інформацію.
Чи є спосіб тимчасово призупинити відстеження історії в bash, щоб увійти до свого роду "інкогніто"? Я ввожу в свій термінал речі, які не хочу записувати, чутливу фінансову інформацію.
Відповіді:
Це ви повинні шукати:
unset HISTFILE
man bash
Якщо HISTFILE вимкнено або якщо файл історії непридатний, історія не зберігається.
Крім того, якщо ви хочете вимкнути його, а потім знову ввімкнути, використовувати його може бути простіше set
:
set +o history
set -o history
set +o history
та set -o history
перемикатись туди-сюди, коли я роблю секретні речі;)
unset HISTFILE
не працює. set -/+o history
працює як шарм! спасибі
Переконайтеся, що вона HISTCONTROL
містить ignorespace
. Ви, ймовірно, захочете додати HISTCONTROL=ignorespace
( HISTCONTROL=ignoredups:ignorespace
або щось) до свого ~/.bashrc
. Тоді будь-який командний рядок, який починається з пробілу, опускається з історії.
Інша можливість - почати новий сеанс bash, який не зберігає свою історію.
$ bash
$ unset HISTFILE
$ sooper-sekret-command
$ exit
$ #back in the parent shell
Якщо вам потрібно уникати збереження кількох команд, і ви все ще хочете скористатися стрілкою вгору для доступу до попередніх команд, скористайтеся:
$ bash # open a new session.
$ unset HISTFILE # avoid recording commands to file.
$ commands not recorded
.
.
$ exit
$
Існує чотири способи (рівні) для управління тим, як зберігаються команди.
Перший і найпростіший - використовувати ignorespace
(або ігнорувати):
$ HISTCONTROL="ignorespace${HISTCONTROL:+:$HISTCONTROL}"
Це дозволить використовувати пробіл перед командами, які ви хочете уникнути запису в список пам'яті history
. І, як наслідок, оскільки в пам'яті немає записаної команди, яку можна було б надіслати у файл, також уникне відправлення однієї команди у файл, перелічений у $HISFILE
.
Уникайте запису команд у файл у $HISTFILE
:
$ unset HISTFILE
Якщо не встановлено, історія команд не зберігається при виході оболонки.
Недійсне HISTFILE=''
та / або встановлене HISTFILE=/dev/null
для того ж ефекту. Зрозумійте, що команди все ще записуються до списку пам'яті, спробуйте history
команду чи стрілку вгору.
Попередження: якщо HISTFILE буде скинуто до існування оболонки, все, що було записано в пам'яті, все одно можна записати у файл.
Уникайте запису нових команд до списку історії в пам'яті. І, як це не знаходиться в пам'яті, не можна записати у файл.
$ shopt -ou history # or set +o history
Повторно ввімкнути shopt -os history
(або set -o history
)
Видаліть усі команди із списку історії в пам'яті:
$ HISTSIZE=0
Усі команди стираються (з пам'яті), і, отже, нічого не можна зберегти у файл, звичайно, поки змінна не буде встановлена знову на якесь дійсне числове значення.
man history
, що не збирається скоротити це для більшості з нас.
HISTIGNORE
, що subsumes
функція HISTCONTROL
.
LESS=+'/^ *HISTI' man bash
(чи не це "сторінки вручну"?). @NathanBasanese
Існує один простий спосіб вимкнути історію, тому команди не зберігатимуться у .bash_history
файлі.
Ви повинні поставити пробіл або пробіл перед будь-якою командою, щоб ця команда не зберігалася в історії. Наприклад:
$ ls
print the list of file
$ history
ls
history
$ pwd
print the current working directory
$ history
ls
history
pwd
Команда не отримає магазин в історії, тому що вона має прогалини в передній частині .
export HISTFILE=/dev/null
Це мій шлях. На випадок, якщо вимкнено HISTORY / HISTFILE / HISTCONTROL і т. Д. ... не працює, експорт його в / dev / null завжди працював на мене.
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin16)
HISTFILE
перевіряється лише при виході bash, тому перший метод не працює таким, як є (якщо ви відновите значення, команда буде збережена).set +o history
працює за вказівкою.