Я использую в основном Terminator, и обычно он открывается с тремя разделенными терминальными окнами. Я также использую терминал Gnome по разным причинам. Мне интересно, как история bash обрабатывается в этом случае, поскольку я иногда пропускаю ранее выпущенные команды, когда я запускаю history
Например, моя подсказка показывает текущую строку истории bash (\!), и если я запуск Terminator с 3-мя разделительными терминальными окнами. Я получаю одну и ту же строку истории (скажем, 100) на всех терминалах. Какая история будет сохранена?
Также запускает терминал Gnome после использования Terminator. Я получаю строку 100 при запуске независимо от всех команд, выпущенных ранее в Terminator
После нескольких чтений man bash я использую отдельные файлы истории для каждой оболочки. Я сделал mkdir -m 0700 ~/.history, а затем добавил
[[ -d ~/.history ]] || mkdir --mode=0700 ~/.history
[[ -d ~/.history ]] && chmod 0700 ~/.history
HISTFILE=~/.history/history.$$
# close any old history file by zeroing HISTFILESIZE
HISTFILESIZE=0
# then set HISTFILESIZE to a large value
HISTFILESIZE=4096
HISTSIZE=4096
к моему ~/.bashrc. Время от времени я вспоминаю du -sk .history и очищаю его. Приятно, чтобы каждая команда, которую я напечатала, сохранялась для меня.
Я только что использовал выше, чтобы посмотреть, что я делал в последнее время: cut -f1 "-d " .history/* | sort | uniq -c |sort -n -r |less или cut -f1-2 "-d " .history/* | sort | uniq -c |sort -n -r |less (чтобы включить 1-й аргумент, например sudo mount в цепочке сортировки).
Показать history со всех терминалов:
Добавить export PROMPT_COMMAND='history -a; history -r' в ваш .bashrc-файл.
Источник: http://northernmost.org/blog/flush- bash_history-after-each-command / comment-page-1 / index.html # comment-640
См. также «Сохранение постоянной истории в bash» для другой альтернативы. Он настраивает ваше приглашение отправлять все команды, когда-либо введенные в любой терминал, в файл «постоянной истории» (наряду с тем, что обычно делается для обычного .history).