По какой-то причине я не могу заставить мою систему сохранять историю BASH после перезагрузки. Вот соответствующие разделы моего ~/.bashrc
:
shopt -s histappend
PROMPT_COMMAND='history -a; updateWindowTitle'
export HISTCONTROL=ignoredups
export HISTSIZE=9999
export HISTFILESIZE=999999
export HISTFILE="$HOME/.bash_history"
Насколько я могу судить, это все необходимые опции (я знаю, что раньше у меня была возможность вести историю по нескольким перезагрузкам без всего этого в прошлом). Однако, несмотря на добавление этих параметров несколько перезагрузок назад, я все еще теряю большую часть своей истории после перезагрузки. Он не пустой, но в нем нет 9999 строк, которые были у меня до перезагрузки.
Прежде чем кто-то пожалуется, да, я прочитал эти вопросы. Я реализовал некоторые из их предложений, перечисленных выше, остальные были либо бесполезны, либо не актуальны:
- Потеря истории Bash при использовании histappend
- Как не дать Bash изменить историю?
- Что определяет, что появляется в команде bash history?
- Как мне сохранить историю bash между сеансами?
- сохранить историю Bash, регулярно
Если есть вероятность, что там будут другие релевантные команды, вы можете просмотреть весь мой ~/.bashrc
здесь.
Итак, что мне не хватает? Почему моя история не сохраняется? Если кто-то думает, что другой файл может быть уместным, дайте мне знать, и я опубликую его. Я проверил, запустив grep -i hist \.*
В моем $HOME
который показал, что это единственно актуально .
файл, содержащий hist
или HIST
был .bashrc
.
Я использую Linux Mint Debian Edition, GNU bash, версия 4.2.36(1) -релиз (x86_64-pc-linux-gnu), и мой любимый эмулятор терминала (в случае необходимости) - terminator
.
ОБНОВИТЬ:
Следуя предложению @ mpy в комментариях, я изменил свой ~/.bashrc
установив HISTFILE=~/bash_history
в отличие от стандартного ~/.bash_history
и это, похоже, решает проблему для интерактивных оболочек. Оболочки входа в систему по-прежнему отображают то же поведение, при этом история усекается до 500
строк. Однако в соответствующих файлах не установлены переменные, связанные с HIST
:
$ for f in /etc/profile ~/.profile ~/.bash_profile ~/.bash_login; do \
echo -ne "$f :"; echo `grep HIST $f`; \
done
/etc/profile :
/home/terdon/.profile :grep: /home/terdon/.profile: No such file or directory
/home/terdon/.bash_profile :grep: /home/terdon/.bash_profile: No such file or directory
/home/terdon/.bash_login :grep: /home/terdon/.bash_login: No such file or directory
$ grep -r HIST /etc/profile.d/ <-- returns nothing
Итак, почему установки HISTSIZE
и HISTFILESIZE
в ~/.bashrc
недостаточно, если я явно не установлю для $HISTFILE
значение, отличное от значения по умолчанию ~/.bash_history
?