Zsh如何跟踪命令历史记录?
我在主目录中看到两个文件:.zhistory
和.zsh_history
。它们之间有什么区别?这些文件似乎包含了我的所有历史记录。Zsh会永远保持向其中之一添加行吗?这会不会使历史记录搜索速度太慢?
我可以安全地使这些文件符号链接到另一个位置吗?(例如,一个git存储库以跟踪历史记录的更改)
Zsh如何跟踪命令历史记录?
我在主目录中看到两个文件:.zhistory
和.zsh_history
。它们之间有什么区别?这些文件似乎包含了我的所有历史记录。Zsh会永远保持向其中之一添加行吗?这会不会使历史记录搜索速度太慢?
我可以安全地使这些文件符号链接到另一个位置吗?(例如,一个git存储库以跟踪历史记录的更改)
Answers:
Zsh在变量指示的文件中存储输入行(可能包含时间信息)HISTFILE
。这应该是一个绝对文件名(否则它将相对于当前当前目录进行解释)。
Zsh没有的内置默认值HISTFILE
。zsh的分布带有一个安装向导它具有价值的新用户~/.histfile
内置的,所以这是zsh的用户获得默认。Oh-my-zsh带有HISTFILE=.zhistory
预设。因此,似乎您在默认设置和oh-my-zsh中都尝试了zsh。检查您的.zshrc
(或文件日期)以查看您当前正在使用的日期。
zsh如何打开文件,因此,如果它是符号链接,会发生什么,取决于几个选项。
append_history
(默认设置), inc_append_history
或者share_history
设置了,或者使用显式保存了历史记录fc -AI
,则zsh会追加到现有文件中。hist_save_by_copy
设置了该选项(自zsh 5.0起默认设置,但在4.2中不存在),则zsh会写入一个临时文件,然后在完成时将其移到适当的位置。在这种情况下,如果历史记录文件是符号链接,则新文件将替换符号链接。不要将zsh指向符号链接,而是将其设置HISTFILE
为您想要历史记录文件所在的位置。
通过变量HISTSIZE
和 可以配置保留多少行历史记录SAVEHIST
。HISTSIZE
是会话中保留SAVEHIST
的最大行数,也是历史记录文件中保留的最大行数。
要完全保存一些历史记录,您需要同时设置HISTFILE
和SAVEHIST
,因为默认值SAVEHIST
是0。您可能还希望增加HISTSIZE
它(从zsh 5.0开始,默认值只有30)。
~/.zshrc
和/或/etc/zshrc
用于选项描述有zsh.sourceforge.net/Guide/zshguide02.html#l17