.zhistory 的源代码控制和符号链接

.zhistory 的源代码控制和符号链接

我将主目录中的点文件符号链接到 git 源代码控制下的单独文件夹中的实际文件。这很好用,但由于某种原因我遇到了问题.zhistory

$ echo $HISTFILE
/Users/amelio/.zhistory
$ cd & ln -s $DOT_FILES_REPO/.zhistory .
$ fc -W && fc -R

运行上面的命令后,我看到的.zhistory不是最后一个命令后面的符号链接。为什么?我怎样才能.zhistory在我的主目录中使用指向不同文件的符号链接?

答案1

当 zsh 更新历史文件时,它会创建一个临时文件,然后将其移动到位,相当于

print the history >.zhistory.new
mv .zhistory.new .zhistory

如果.zhistory之前是符号链接,那么之后就不是了。

这种方法的优点是,如果 zsh 崩溃(由于错误、突然终止、突然重启),则历史文件不会受到影响。特别是,历史文件永远不会被截断或无效。

如果您想将历史文件放在不同的位置,请不要使用符号链接,而是设置变量HISTFILE

相关内容