Что-то грызло меня некоторое время, и я не могу найти подходящий ответ ни на страницах руководства, ни с помощью вашей поисковой системы «Не будь злым».
Мой .bashrc имеет следующее:
shopt -s histappend
HISTSIZE=100
HISTFILESIZE=0 # 200 previous value
Установка HISTFILESIZE на 0 позволяет мне начинать с чистого листа истории с каждым новым окном терминов.
Я считаю это практичным в сочетании с использованием приглашения, содержащего \#
, потому что при визуализации предыдущей команды перед ее вызовом с помощью !n
или !-p
можно просто сделать:
$ history | more
чтобы увидеть соответствующее значение «n»
В моем случае обычно результат:
$ \history | tail -1 | awk '{print $1}' # (I know this is an overkill, don't flame me)
равен расширенному значению # в PS1 минус 1, что мне нравится быть во все времена. Но иногда нет. Временами расширенное значение # вроде «убегает» Он увеличивается таким образом, что становится> чем
$(( $(\history | tail -1 | awk '{print $1}')+1 ))
Любые указатели, кто-нибудь?
Самая вероятная причина этого состоит в том, что Вы установили HISTCONTROL
к значению, которое включает ignoredupes
. Тест путем выполнения
echo $HISTCONTROL
Если это возвращает что-то как ignoredups
, это означает, что дублирующиеся команды не сохраняются к Вашей истории. Они однако считаются PS1 \#
. Это означает это \#
счастливо увеличит каждый раз, когда Вы выполняете ту же команду дважды, но Ваш history
не увеличится и это приведет к несоответствию, которое Вы наблюдаете.
Так, любой удаляет ignoredupes
от HISTCONTROL
(это обычно устанавливается в Вашем ~/.profile
но может также быть установлен в ~/.bashrc
) или используйте \!
вместо \#
в PS1
.