Одна и та же команда снова и снова появляется в моей истории. Как я могу избежать этого? Я знаю, что это возможно через HISTCONTROL
, но я не нашел правильный путь.
Со страницы руководства bash
:
HISTCONTROL
Список значений, разделенных двоеточиями, управляющих тем, как команды сохраняются в списке истории. Если список значений включает в себя
blockquote> blockquote>ignorespace
, строки, начинающиеся с пробела, не сохраняются в списке истории. Значениеignoredups
приводит к тому, что строки, соответствующие предыдущей записи истории, не сохраняются. Значениеignoreboth
является сокращением дляignorespace
иignoredups
. Значениеerasedups
приводит к тому, что все предыдущие строки, соответствующие текущей строке, удаляются из списка истории перед сохранением этой строки. Любое значение, отсутствующее в приведенном выше списке, игнорируется. Если HISTCONTROL не установлен или не содержит допустимого значения, все строки, прочитанные синтаксическим анализатором оболочки, сохраняются в списке истории при условии значения HISTIGNORE. Вторая и последующие строки многострочной составной команды не тестируются и добавляются в историю независимо от значения HISTCONTROL.Поэтому добавьте следующую строку в
~/.bashrc
:
export HISTCONTROL=ignoreboth:erasedups
Вставьте это в свои ~/.bashrc
:
export HISTCONTROL=ignoredups
Вы можете вместо этого использовать ignoreboth
. Это сокращение для ignorespaces
(команды, начинающиеся с пробелов) и ignoredups
(дубликаты).
Я предпочитаю ignoredups
сам по себе, так как я нахожу поведение по умолчанию игнорирования команд с пробелами впереди довольно раздражающим, когда я копирую команду с веб-сайта, и она не сохраняется, потому что я тоже случайно скопировал в пробел .... Но каждому свое.
Если поместить это в ~/.bashrc
, решение @ alvin будет применено к различным сеансам как wlell
HISTCONTROL=ignoredups:erasedups
shopt -s histappend
PROMPT_COMMAND="history -n; history -w; history -c; history -r; $PROMPT_COMMAND"
Источник: Linux: Bash history: настройки ignoredups и erasedups конфликтуют с общей историей между сессиями
Добавьте следующее к ~/.bashrc
:
export HISTCONTROL=ignoredups
Для этого вы можете использовать эту команду:
nano ~/.bashrc
Для уникальной записи каждой новой команды сложно. Сначала нужно добавить к ~/.profile
или аналогичному:
HISTCONTROL=erasedups
PROMPT_COMMAND='history -w'
Затем нужно добавить к ~/.bash_logout
:
history -a
history -w