У меня много проблем с настройкой истории терминала Bash так, как я хочу. Я хотел бы, чтобы не было повторяющихся записей, и если я ввожу команду, я хочу, чтобы она была сохранена, а дубликаты, указанные выше, были удалены.
Проблема в том, что history
команда показывает мне, что она работает так, как я хочу, но как только я выхожу, дубликаты возвращаются снова. Я считаю, что это просто добавление истории к существующей. У меня есть эти строки в моем .bashrc
файле:
HISTCONTROL=ignoreboth:erasedups
shopt -u histappend
Я даже пытался раскомментировать shopt
, но он все равно добавляет историю при выходе из системы. Как я могу сделать так, чтобы история была такой, какой она была до выхода из системы?
bash
command-history
Craig
источник
источник
Ответы:
Вы
erasedups
должны делать то, что вы хотите в отношении дубликатов - просто обратите внимание, что удаление дубликатов запускается в момент добавления новой записи в историю и что оно стирает все старые вхождения команды, оставляя только самые последние.Отвечая на вопрос « Как я могу сделать так, чтобы история была такой, какой она была до выхода из системы? »
На мой взгляд, это может быть полезно только время от времени. (Иначе зачем вообще использовать историю?) Вы можете сделать это, выполнив команду
Это очищает все записи истории, хранящиеся в данный момент в памяти, а затем перечитывает всю историю из файла истории. Таким образом, все команды, введенные вами после входа в текущий сеанс оболочки, забыты. Я нахожу это весьма полезным в ситуациях, когда я много тестирую (много похожих команд, но на самом деле не дублирую), а затем не хочу, чтобы моя история была искажена этим, поэтому у меня есть псевдоним для этого в моем
.bashrc
:(
hrr
запоминается как "перечитанная история").источник