Это решение кажется мне весьма многообещающим после того, как я использовал его некоторое время.
Добавьте следующее в свой ~/.bashrc файл:
shopt -s histappend
PROMPT_COMMAND="история -a; история -c; история -r; $ PROMPT_COMMAND"
fc_override_prev_command_if_no_args() {
если [ $# -eq 0 ]; тогда
ФК
история -d $(wc -l < ~/.bash_history)
история -w
история -с
история -r
еще
ФК $@
фи
}
псевдоним fc=fc_override_prev_command_if_no_args
Что это делает изменение поведение ФК команда, когда она вызывается без аргументов. Когда он вызывается с аргументами, я сделал так, чтобы он вел себя как обычно, так как в противном случае его поведение могло бы вводить в заблуждение без если / еще / фи блокировка и без еще часть вообще ничего бы не сделала.
С другой стороны, если аргументы не указаны, то ФК команда выполняется, последняя запись из истории bash удаляется, а кэшированная история перезагружается из файла.
Часть с переназначением переменной PROMPT_COMMAND я позаимствовал из здесь и я нашел это полезным, поскольку отправленные команды мгновенно доступны в истории bash других открытых в данный момент терминалов с bash (хорошо, не совсем мгновенно, но даже такое действие, как отправка ПОДПИСЬ сигнала с помощью Ctrl+C достаточно для перезагрузки кеша истории).
Не стесняйтесь редактировать этот ответ или комментировать, если вы считаете, что некоторые части решения не нужны.
Ссылка к суть с приведенным выше фрагментом доступен здесь