Есть ли способ временно приостановить отслеживание истории в 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работает как шарм! спасибо
Используя bash, установите HISTCONTROL="ignorespace"и поставьте перед пробелом любую команду, которую вы не хотите записывать в историю. В случае, если вы забыли принять какие-либо меры, есть также history -d <number>для удаления конкретной записи или history -cдля очистки всей истории команд.
Убедитесь, что 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
Если не установлено, история команд не сохраняется при выходе из оболочки.
Null 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работает как указано.