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