HISTTIMEFORMAT 更改根本不起作用

HISTTIMEFORMAT 更改根本不起作用

我正在尝试为历史命令添加时间戳

export HISTTIMEFORMAT='%F %T '

,但历史记录中的命令(旧的和新的)不显示时间戳。

输出

history | tail
  445  exoirt HISTTIMEFORMAT='F% T%'
  446  export HISTTIMEFORMAT='F% T%'
  447  history
  448  history | tail
  449  ls
  450  cd
  451  ls
  452  cd
  453  ls
  454  cd

我期望数字和列之间有一些日期时间信息。 就像这里一样(在下面的截图中也可见)

       1  2008-08-05 19:02:39 service network restart
       2  2008-08-05 19:02:39 exit
       3  2008-08-05 19:02:39 id
       4  2008-08-05 19:02:39 cat /etc/redhat-release

输出

type history

history is an alias for history 0

我尝试将变量插入 ~/.bashrc 文件中,但它再次不起作用。

编辑: 我正在运行 Kali Linux。我尝试重新启动系统并重置历史大小和数据。 编辑#2: 输出

echo $ZSH_VERSION 
5.8

输出

echo $SHELL
/usr/bin/zsh

答案1

你使用的是 Kali Linux。 Kali Linux 发行版使用zsh作为默认登录 shell,而不是bash.

这意味着您所做的任何更改~/.bashrc都不会被您使用的 shell 看到。相反, shellzsh使用该~/.zshrc文件来初始化交互式 shell 会话。

此外,zshshell 没有名为 的 shell 变量HISTTIMEFORMAT可以执行任何特定操作。 (顺便说一句,如果您一直在使用bash,则不必使用export此变量。)相反,您将必须使用history内置命令以不同的方式查看历史记录。

但是,首先您必须让 shell 以扩展格式存储历史信息,其中包括时间戳。你这样做

setopt EXTENDED_HISTORY

~/.zshrc(如果您希望在启动的所有 shell 会话中执行此操作,则可以执行此操作)。该 shell 选项记录在zshoptions手册中。

然后,您必须删除Kali Linux 上history默认~/.zshrc设置的相当无用的别名,因为它阻止我们history正确使用该命令。

要么注释掉该行

alias history="history 0"

或添加

unalias history

在文件末尾。

然后,您应该能够使用查看时间戳

history -i

另请参阅手册中fc(history实际上与)的文档,了解如何将 的输出格式化为您想要的格式。例如fc -lzshbuiltinshistory

history -t '%F %T'

(这恰好与 from 的输出格式几乎完全相同history -i,但添加了秒数。)

相关内容