Поскольку часто кажется, что история не сохраняется при выключении и не закрытии терминала gnome, я хотел бы добавить в историю bash перед тем, как показывать приглашение, если строка не является дубликатом. Хотя у меня есть export HISTCONTROL=ignoreboth
в bashrc, что должно подразумевать passedups, похоже, это не работает, так как я все еще получаю дубликаты в bash_history. Так как это сделать?
Чтобы предложить дополнительные указания, хотя и не решения: я думаю, что $PROMPT_COMMAND должен иметь"$(history 1)" (if_not_duplicate) >> ~/.bash_history
И это удалит несмежные дубликаты, если они уже вставлены.
perl -nei '$H{$_}++ or print' ~/.bash_history
решение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'
При таком подходе следует учитывать два обстоятельства:
- Вы потеряете историю (в частности, дублирующиеся записи), что может иметь значение, если вы полагаетесь на значения HISTTIMEFORMAT для чего-либо.
- Вы будете постоянно обрезать свой HISTFILE до HISTFILESIZE.
Это не обязательно проблемы, а просто незначительные неполадки, о которых вам следует знать.