После выяснения, что это shopt -s histappend значит , это кажется очень вменяемым, и я удивлен, что это не по умолчанию. Зачем кому-то хотеть стереть свою историю на каждом выходе оболочки?
После выяснения, что это shopt -s histappend значит , это кажется очень вменяемым, и я удивлен, что это не по умолчанию. Зачем кому-то хотеть стереть свою историю на каждом выходе оболочки?
Ответы:
Что ж, когда histappendне установлено, это не означает, что история стирается при каждом выходе из оболочки. Без histappendbash читает при запуске в память исторический файл - во время операции добавляются новые записи - и при выходе из оболочки последние строки 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