сохранить историю Bash, регулярно

9

У меня есть bash, настроенный для сохранения истории в файл. Это происходит всякий раз, когда bash выходит [правильно]. Поскольку иногда bash не выходит должным образом, история теряется.

Итак, вопрос в том, можно ли настроить bash для более регулярного сохранения истории?


Я использую Debian Gnu (версия 6, Squeeze) с ядром Linux.

версия bash: GNU bash, версия 4.1.5 (1) -релиз (i486-pc-linux-gnu)

Ctrl-Alt-Делор
источник

Ответы:

8

сохраните это в ваш bash_profile или bashrc

shopt -s histappend

PROMPT_COMMAND="history -a;$PROMPT_COMMAND"

d4v3y0rk
источник
Это все еще правильный ответ? В моей системе есть запись shopt -s histappendпод /etc/bash/bashrc. Тем не менее, любой нечистый выход запущенных оболочек теряет свою историю командной строки.
Никос Александрис
-1

Возможно, ваш $ HISTFILE принадлежит root. Предполагая, что вы используете bash в качестве оболочки для входа. Вот как это проверить:

$ [ -z $HISTFILE ] && echo need to set HISTFILE || ls -l $HISTFILE
-rw------- 1 root root 36639 May 21 19:48 /home/joeb/.bash_history

По умолчанию для HISTFILE должно быть ~ / .bash_history, если вы видите ошибку «необходимо установить HISTFILE» или если $ HISTFILE не является ~ / .bash_history, то вам следует проверить ~ / .profile, ~ / .bash_profile или ~ /. Bashrc, чтобы убедиться, что он не устанавливается или сбрасывается неправильно.

Обычно он принадлежит только пользователю root, поэтому просто сбросьте его:

$ chown joeb.joeb $HISTFILE
$ ll $HISTFILE
-rw------- 1 joeb joeb 36639 May 21 19:48 /home/joeb/.bash_history

Выйдите, затем войдите.

$ history

Должен отображать последний набор команд, введенных до того, как файл стал владельцем root, а затем команды, введенные после изменения владельца файла.

focused4success
источник
3
Поскольку OP говорит, что история сохраняется при нормальном выходе bash, его проблема не имеет ничего общего с разрешениями. Возможно, ваш ответ все еще может быть полезен для тех, у кого проблемы с историей Bash.
Дмитрий Григорьев