По умолчанию, если пользователь входит в систему через bash, вся история команд будет сохранена после выхода.
Как сохранить каждую команду в ~/.bash_history сразу после ее ввода пользователем?
Как сохранить все команды, набранные в сеансе, вручную перед выходом из bash?
1. Чтобы сохранить все команды, введенные в сеансе вручную, до выхода из bash, введите следующую команду:
$ history -a
2. Чтобы сохранить все набранные команды сразу после ввода, добавьте эти две строки в файл ~/.bashrc:
$ shopt -s histappend $ PROMPT_COMMAND='history -a'
После внесения вышеуказанных изменений выйдите и снова войдите в систему.
3. Чтобы сделать его эффективным для всех пользователей в системе, добавьте следующие две строки в /etc/bashrc:
$ shopt -s histappend $ PROMPT_COMMAND='history -a'
Проверка
При этом все команды из разных сессий с одним и тем же пользователем могут быть смешаны в ~/.bash_history, например:
echo "command 1 from session A" echo "command 1 from session B" echo "command 2 from session A" echo "command 3 from session A" echo "command 4 from session A" echo "command 2 from session B" echo "command 3 from session B" echo "command 5 from session A"
Вы также можете проверить, регистрируются ли команды сразу, даже если они выходят из оболочки bash.
Если одновременно выполняется слишком много сеансов, немедленное сохранение каждой команды может привести к большому количеству операций записи в файл.