不知何故,我的 zsh 历史记录显示错误的时间戳,如下所示。
❯ history -E 1 | tail -20
6047 31.12.2019 15:08 babel-node
6048 31.12.2019 15:08 node -v
6049 31.12.2019 15:08 git diff
6050 31.12.2019 15:08 rm package-lock.json
6051 31.12.2019 15:08 yarn update
6052 31.12.2019 15:08 yarn
6053 31.12.2019 15:08 rm yarn.lock
6054 31.12.2019 15:08 yarn install
6055 31.12.2019 15:08 yarn serve
6056 31.12.2019 15:08 exit
6058 31.12.2019 15:00 bin/rails s
6059 31.12.2019 15:00 cd ../my_project
6060 31.12.2019 15:00 bin/rails c
6062 31.12.2019 15:03 man history
6063 31.12.2019 15:03 vi ~/.bash_history
6064 31.12.2019 15:03 vi ~/.zsh_history
6065 31.12.2019 15:04 zsh -f
6066 31.12.2019 15:06 fc -li 100
6067 31.12.2019 15:08 history -E 1 | tail -100
15:08
除最新命令外,所有带有时间戳的命令history
都是在昨天之前执行的。每次history
执行命令时,旧命令的时间戳都会刷新。
虽然我要清除历史数据,但我不想遇到同样的错误。有谁知道导致此错误的原因以及如何防止它?
我正在使用zsh 5.3 (x86_64-apple-darwin18.0)
中iTerm2
。
变量
这些是我的历史相关变量。
❯ env | grep HIST
❯ typeset | grep HIST
HISTCHARS='!^#'
integer 10 readonly HISTCMD=6119
HISTFILE=/Users/ironsand/.zsh_history
integer 10 HISTSIZE=10000
integer 10 SAVEHIST=10000
答案1
如果您没有EXTENDED_HISTORY
在 中设置 shell 选项zsh
,则保存的历史事件$HISTFILE
将不带时间戳保存。
当您使用 时history -E 1
,历史事件将从内存历史记录的开头到结尾打印,并带有时间戳(以特定方式格式化)。
读取的历史记录条目没有时间戳,因此会为它们分配与执行命令的$HISTFILE
时间相对应的时间戳。history
要保存每个历史事件的时间戳,请启用EXTENDED_HISTORY
shell 选项。要对所有未来的交互式zsh
shell 会话执行此操作,请修改您的$ZDOTDIR/.zshrc
文件并添加
setopt EXTENDED_HISTORY