1

Поскольку часто кажется, что история не сохраняется при закрытии и не закрытии терминала gnome, я хотел бы добавить к истории bash, прежде чем показывать подсказку, если строка не является дубликатом. Хотя у меня есть export HISTCONTROL=ignoreboth в bashrc, который должен подразумевать ignoredups, похоже, он не работает, так как я все еще получаю дубликаты в bash_history. Так как это сделать?

Чтобы предложить дальнейшие указания, но не решения: я думаю, что $ PROMPT_COMMAND должен иметь "$(history 1)" (if_not_duplicate) >> ~/.bash_history

И это позволит удалить несмежные дубликаты, если они уже вставлены.

perl -nei '$H{$_}++ or print' ~/.bash_history 

1 ответ1

1

Вам нужно изменить оба PROMPT_COMMAND и HISTCONTROL, чтобы сделать это правильно. Следующее должно работать для вас:

# The secret sauce is "erasedups," which replaces the default of "ignoredups."
export HISTCONTROL=erasedups:ignorespace

# Write the history to HISTFILE before showing the prompt.
export PROMPT_COMMAND='history -w'

Два подхода, которые следует учитывать при таком подходе:

  1. Вы потеряете историю (особенно повторяющиеся записи), что может иметь значение, если вы полагаетесь на значения HISTTIMEFORMAT для чего-либо.
  2. Вы будете постоянно обрезать свою HISTFILE до HISTFILESIZE.

Это не обязательно проблемы, просто незначительные проблемы, о которых вы должны знать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .