Чи є спосіб тимчасово призупинити відстеження історії в 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працює за вказівкою.