为什么用编辑器修改后硬链接没有更新

为什么用编辑器修改后硬链接没有更新

我使用的是 Mac OS X,但是是命令行。我想从我的.profile文件到系统上的另一个文件建立链接,以便更新一个文件更新另一个文件,反之亦然。

本文让我认为硬链接就是我所需要的。我一直使用的命令是:

ln .profile ~/Newpath/.profile

这种方式是有效的,因为文件是在 处创建的Newpath,但是,更新一个文件不会自动更新另一个文件,反之亦然。

我尝试过ln在桌面上使用简单的文件,并且链接确实会相互更新。我想知道是否有人有过由于某种原因无法使用点文件或 Mac 上主目录中的文件的链接的经验。

知道这里会发生什么吗?

答案1

请注意,许多编辑器会写入临时文件并最终重命名为目标文件。

这将导致您的硬链接丢失。

答案2

也许这些文件所在的目录位于不同的文件系统/分区上?硬链接只能存在于单个分区上。

if test x"$(stat -f'%d' .)" != x"$(stat -f'%d' ~/Newpath)"; then
  echo "Directories are on different partitions"
fi

答案3

我刚刚在我的 Mac 上进行了测试,效果非常好。
更新其中一个,另一个也会更新。

顺便说一句,符号链接应该和硬链接一样有效。

答案4

dubiousjim 的评论指出了我的问题:

我认为每次你签出文件的新副本时 git 都会中断硬链接。编辑:是的,我刚刚验证了它会,即使硬链接位于单个存储库中

相关内容