После выяснения, что это shopt -s histappend
значит , это кажется очень вменяемым, и я удивлен, что это не по умолчанию. Зачем кому-то хотеть стереть свою историю на каждом выходе оболочки?
После выяснения, что это shopt -s histappend
значит , это кажется очень вменяемым, и я удивлен, что это не по умолчанию. Зачем кому-то хотеть стереть свою историю на каждом выходе оболочки?
Ответы:
Что ж, когда histappend
не установлено, это не означает, что история стирается при каждом выходе из оболочки. Без histappend
bash читает при запуске в память исторический файл - во время операции добавляются новые записи - и при выходе из оболочки последние строки HISTSIZE записываются в файл истории без добавления, то есть с заменой предыдущего содержимого.
Например, если в хронологическом файле содержится 400 записей, во время выполнения bash добавляется 10 новых записей - для гистсайта установлено значение 500, тогда новый исторический файл содержит 410 записей.
Такое поведение проблематично, только если вы используете больше экземпляров bash параллельно. В этом случае файл истории содержит только содержимое последней выходящей оболочки.
Независимо от этого: есть некоторые люди, которые хотят стереть свою историю при выходе из оболочки по причинам конфиденциальности.
histappend
к тому root
, достигает ли история диска? Опять же, это влияет только на то, что написано, а не если .
histappend
а также HISTCONTROL=ignoredups:erasedups:ignorespace
кажется хорошим дефолтом для большинства людей.
histappend
эффект бессмысленным, если у меня есть HISTFILESIZE=
и HISTSIZE=
для бесконечной истории?
Для исторической совместимости, я думаю. histappend
Вариант не существовал до Баша 2.0.
histappend
.
bash
«чистый» или поставляемый дистрибутивом.bashrc
. для первого @Gilles, вероятно, правильно. в последнем смысле,-s histappend
по умолчанию, например, в Debian, начиная с 2008 года: bugs.debian.org/cgi-bin/bugreport.cgi?bug=452459