Когда я ввожу какую-либо команду в терминал, она не появляется в моем файле ~/.bash_history, пока я не выйду из моего сеанса.
Кроме того, когда я вручную редактирую файл ~/.bash_history (например, Я удаляю последние три команды), когда я набираю history, он по-прежнему показывает команды, которые я удалил из файла ~/.bash_history.
Как мой ~/.bash_history файл и команда history синхронизируются?
Когда вы открываете терминал bash, он загружает содержимое ~/.bash_history и строит историю активной оболочки (в ОЗУ), добавляя к ней каждую команду, выполненную в этой оболочке, и только к ней, а не к файлу. [ ! d0]
Только когда вы закрываете терминал bash, его история добавляется к вашему ~/.bash_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)
Если вы хотите изменить это поведение, чтобы временная история сохранялась в ~/.bash_history непосредственно после выполнения команды, добавьте это line:
PROMPT_COMMAND="history -a"
Если вы хотите, чтобы каждый терминал автоматически загружал файл ~/.bash_history после выполнения каждой команды, добавьте эту строку вместо:
PROMPT_COMMAND="history -a; history -c; history -r"
Если вы хотите исключить определенные команды (например, все, начиная с sudo и cat), сохранить эту строку:
HISTIGNORE="sudo*:cat*"
Когда вы открываете терминал bash, он загружает содержимое ~/.bash_history и строит историю активной оболочки (в ОЗУ), добавляя к ней каждую команду, выполненную в этой оболочке, и только к ней, а не к файлу. [ ! d0]
Только когда вы закрываете терминал bash, его история добавляется к вашему ~/.bash_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)
Если вы хотите изменить это поведение, чтобы временная история сохранялась в ~/.bash_history непосредственно после выполнения команды, добавьте это line:
PROMPT_COMMAND="history -a"
Если вы хотите, чтобы каждый терминал автоматически загружал файл ~/.bash_history после выполнения каждой команды, добавьте эту строку вместо:
PROMPT_COMMAND="history -a; history -c; history -r"
Если вы хотите исключить определенные команды (например, все, начиная с sudo и cat), сохранить эту строку:
HISTIGNORE="sudo*:cat*"
Когда вы открываете терминал bash, он загружает содержимое ~/.bash_history и строит историю активной оболочки (в ОЗУ), добавляя к ней каждую команду, выполненную в этой оболочке, и только к ней, а не к файлу. [ ! d0]
Только когда вы закрываете терминал bash, его история добавляется к вашему ~/.bash_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)
Если вы хотите изменить это поведение, чтобы временная история сохранялась в ~/.bash_history непосредственно после выполнения команды, добавьте это line:
PROMPT_COMMAND="history -a"
Если вы хотите, чтобы каждый терминал автоматически загружал файл ~/.bash_history после выполнения каждой команды, добавьте эту строку вместо:
PROMPT_COMMAND="history -a; history -c; history -r"
Если вы хотите исключить определенные команды (например, все, начиная с sudo и cat), сохранить эту строку:
HISTIGNORE="sudo*:cat*"