Как история управляет работой?

Когда я ввожу любую команду в терминале, это не появляется в моем ~/.bash_history файл, пока я не выхожу из своей сессии.

Кроме того, когда я вручную редактирую мой ~/.bash_history файл (например, я удаляю последние три команды), когда я ввожу history это все еще показывает команды, что я удалил из ~/.bash_history файл. Только, когда я выхожу из своей сессии и вхожу в систему снова, они исчезают.

Как делает мой ~/.bash_history файл и history команда синхронизируется?

8
задан 6 September 2017 в 08:52

1 ответ

Когда вы открываете терминал bash, он загружает содержимое ~/.bash_history и создает историю активной оболочки (в ОЗУ), добавляя каждую команду, выполняемую в этой оболочке, к ней - и только к ней, а не к файлу. [ 1114]

Только когда вы закрываете bash-терминал, его история добавляется в ваш файл ~/.bash_history.


Опции history:

history -a # save the active shell's history to ~/.bash_history (appending)
history -c # clear the active shell's history
history -d NNN # delete row NNN of the active shell's history
history -r # reload the active shell's history from ~/.bash_history (appending)
history -w # save the active shell's history to ~/.bash_history (overwriting)

Опции для файла ~/.bashrc

Если вы хотите изменить это поведение, чтобы сохранить временную историю к ~/.bash_history непосредственно после выполнения команды, добавьте эту строку:

PROMPT_COMMAND="history -a"

Если вы дополнительно хотите, чтобы каждый терминал автоматически загружал файл ~/.bash_history после каждого выполнения команды, добавьте эту строку вместо:

PROMPT_COMMAND="history -a; history -c; history -r"

Если вы хотите исключить некоторые команды (например, все, начинающиеся с sudo и cat) из сохранения, добавьте эту строку:

HISTIGNORE="sudo*:cat*"
10
ответ дан 23 November 2019 в 05:37

Другие вопросы по тегам:

Похожие вопросы: