当我在终端中输入任何命令时,它都不会出现在我的~/.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*"