HISTCONTROL = ignoreboth не работает [дубликат]

На этот вопрос уже есть ответ здесь:

По умолчанию .bashrc в стандартном дистрибутиве Ubuntu 16.04, который поставляется с AWS, содержит следующие строки:

# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth

Однако, похоже, это не работает. Я неоднократно запускал pm2 restart myApp и pm2 list , используя клавишу со стрелкой вверх, и теперь буфер команд содержит почти сотню их строк.

Что может быть не так?

4
задан 11 August 2017 в 17:18

1 ответ

Это работает, как предназначено. ignoredups, подразумеваемый ignoreboth, не добавляет команда к истории, если она совпадает с непосредственной предыдущей командой. Это не смотрит далее назад в истории. Из руководства :

значение А †˜ ignoredups ’ вызывает строки, которые соответствуют предыдущей записи истории, которая не будет сохранена.

Так, это добавит foo дважды к истории:

$ foo
$ bar
$ foo

, Но так будет это:

$ foo
$ bar
$ foo
$ foo

последнее foo не будет добавлено к истории, так как предыдущая команда была foo. Используйте erasedups в соединении:

значение А †˜ erasedups ’ заставляет все предыдущие строки, соответствующие текущей строке быть удаленными из списка предыстории, прежде чем та строка будет сохранена.

Так:

HISTCONTROL=ignoreboth:erasedups
9
ответ дан 1 December 2019 в 09:02

Другие вопросы по тегам:

Похожие вопросы: