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