我想找到定义 histfile 的地方:
echo $HISTFILE
/home/user/.bash_history
我认为它必须在某些配置文件或 rc 文件中定义,但我找不到它。
sudo grep --include=\*{rc,profile}\* -rnw '/' -e "*bash_history*"
如何找到 ENV histfile 的定义?
答案1
这只是默认值为了HISTFILE
。
当 shell 启动时,历史记录将从变量
HISTFILE
(默认~/.bash_history
)命名的文件中初始化。
看起来您已经覆盖了您的PROMPT_COMMAND
,您可能希望通过添加shell_session_history_check;
到它的开头来恢复正常行为。添加echo $PROMPT_COMMAND
到您的个人资料顶部以查看其默认值 ( shell_session_history_check; terminal_update_cwd
)。
一旦你这样做了,HISTFILE
就会在这个函数中被覆盖(运行declare -f shell_session_history_check
以查看函数调用shell_session_history_enable
):
$ declare -f shell_session_history_enable
shell_session_history_enable ()
{
( umask 077;
/usr/bin/touch "$SHELL_SESSION_HISTFILE_NEW" );
HISTFILE="$SHELL_SESSION_HISTFILE_NEW";
SHELL_SESSION_HISTORY=1
}
这将创建一个文件来.bash_sessions
单独存储每个会话的日志。更多关于红迪网:
(~/.bash_sessions/) 用于存储会话特有的 HISTFILE 和 .session 文件。如果在启动 shell 时设置了 $BASH_SESSION 或 $TERM_SESSION_ID(即,如果终端从保存的状态恢复),则关联的 HISTFILE 将合并到当前文件中,并运行 .session 文件。通过为函数 bash_update_session_state 设置 EXIT 陷阱来促进会话保存。