Есть ли способ временно приостановить отслеживание истории в 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
работает как указано.