查找 ENV $HISTFILE 的定义

查找 ENV $HISTFILE 的定义

我想找到定义 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 陷阱来促进会话保存。

相关内容