历史命令如何工作?

历史命令如何工作?

当我在终端中输入任何命令时,它都不会出现在我的~/.bash_history文件中,直到我退出会话。

此外,当我手动编辑~/.bash_history文件时(例如,我删除了最后三个命令),当我输入时,history它仍然会显示我从文件中删除的命令~/.bash_history。只有当我退出会话并再次登录时,它们才会消失。

~/.bash_history我的文件和命令如何history同步?

答案1

当您打开 bash 终端时,它会加载活动 shell 的内容~/.bash_history并构建其历史记录(在 RAM 中),并将该 shell 中执行的每个命令添加到其中 – 并且仅添加到其中,而不添加到文件中。

仅当您关闭 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*"

相关内容