エディタを使用して修正した後にハードリンクが更新されないのはなぜですか?

エディタを使用して修正した後にハードリンクが更新されないのはなぜですか?

私は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はファイルの新しいコピーをチェックアウトするたびにハードリンクを壊すと思います。編集:はい、ハードリンクが単一のリポジトリにあってもそうなることを確認しました。

関連情報