直接设置HISTTIMEFORMAT环境变量即可让history命令显示时间戳,bash原生支持。检查是否启用:echo $HISTTIMEFORMAT为空且history无时间则未配置;临时启用用export HISTTIMEFORMAT="%F %T ";永久生效需在~/.bashrc中添加export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S "和export HISTSIZE=5000,并source生效;注意末尾空格、格式符号等细节。

直接设置 HISTTIMEFORMAT 环境变量就能让 history 命令显示时间戳,这是 bash 原生支持的功能,不需要额外工具或脚本。
确认当前是否已启用时间戳
运行以下命令检查:
-
echo $HISTTIMEFORMAT—— 若输出为空,说明尚未配置; -
history | head -3—— 若只显示序号和命令、没有日期时间,也表明未生效。
临时启用(当前终端有效)
适合快速验证或调试:
- 执行:
export HISTTIMEFORMAT="%F %T "(注意末尾有一个空格); - 再运行
history,应看到类似1 2026-07-21 09:24:15 ls -l的格式; - 关闭终端后该设置自动失效。
永久生效(推荐用户级配置)
编辑个人 shell 配置文件,确保每次登录都自动加载:
- 用编辑器打开:
nano ~/.bashrc; - 在文件末尾添加两行:
export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S "export HISTSIZE=5000(增大历史条数,避免被截断); - 保存后执行:
source ~/.bashrc立即生效; - 新执行的命令会带时间记录,但已有历史条目不会补时间。
补充关键细节
几个容易出错的地方需留意:
-
空格不能少:
HISTTIMEFORMAT值末尾必须保留一个空格,否则时间与命令会粘连; -
格式符号可选:
%F等价于%Y-%m-%d,%T等价于%H:%M:%S,简洁常用; - .bash_history 文件本身不存时间:时间仅在内存中记录,history 命令输出时动态拼接;
-
多终端并发时时间可能错乱:bash 不同步跨会话时间戳,建议开启
shopt -s histappend减少覆盖风险。

















