Когда я набираю какую-либо команду в терминале, она не появляется в моем ~/.bash_history
файле, пока я не выйду из сеанса.
Кроме того, когда я вручную редактирую свой ~/.bash_history
файл (например, я удаляю последние три команды), при вводе history
он все равно показывает команды, которые я удалил из ~/.bash_history
файла. Только когда я выйду из сеанса и снова войду в систему, они исчезнут.
Как мой ~/.bash_history
файл и history
команда синхронизируются?
command-line
bash
bash-history
sys0dm1n
источник
источник
Ответы:
Когда вы открываете терминал bash, он загружает содержимое
~/.bash_history
и создает историю активной оболочки (в ОЗУ), добавляя к ней все команды, выполняемые в этой оболочке, - и только к нему, а не к файлу.Только когда вы закрываете bash-терминал, его история добавляется в ваш
~/.bash_history
файл.Варианты
history
:Опции для
~/.bashrc
файлаЕсли вы хотите изменить это поведение так, чтобы временная история сохранялась
~/.bash_history
непосредственно после выполнения команды, добавьте эту строку:Если вы дополнительно хотите, чтобы каждый терминал автоматически загружал
~/.bash_history
файл после каждого выполнения команды, добавьте эту строку:Если вы хотите исключить определенные команды (например, все, начинающиеся с
sudo
иcat
) из сохранения, добавьте эту строку:источник