5

I am using Mac OS X, but the command line. I want to make a link from my .profile file, to another file on my system so that updating one updates the other and vice versa.

This article makes me think that a hard link is what I need. The command I have been using is:

ln .profile ~/Newpath/.profile

This kind of works, in that a file is created at Newpath, however, updating one file does not automatically update the other nor vice versa.

I have tried ln with simple files on my desktop, and the links do indeed update each other. I am wondering if anybody has experience with links not working with dot files or with files in their home directory on Mac for some reason.

Any idea what could be going on here?

Startec
  • 1,879

5 Answers5

15

Beware that many editors write to a temporary file and rename finally to the target file.

This will cause your hard-linking to be lost.

3

Perhaps the directories where these files reside are on different filesystems / partitions? Hard links can only exist on a single partition.

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

I just tested it on my Mac, it worked perfectly well.
Updating either of them, the other one would be updated too.

BTW, symbolic link should work as well as hard link.

SparedWhisle
  • 3,668
  • 1
    I am using hard links because I wanted to use git with these files. I added clarification to my question because the linking does indeed work on simple text files, on my desktop for example but not with these dot files in my home directory. – Startec Sep 25 '15 at 05:45
  • 7
    I think git will break hard links every time you checkout a new copy of the file. EDIT: Yes, I just verified it will, even if the hard links are in a single repo. – dubiousjim Sep 25 '15 at 07:07
  • This is actually the real culprit I believe. – Startec Aug 05 '16 at 07:53
  • Git should work reasonably well with symbolic links, though. Even if the underlying filesystem doesn't support them (e.g., FAT32), git will mimic them via text files (but you won't be able to use them). – leden Sep 28 '16 at 01:18
0

I also faced the same issue when writing with TextEdit. So then, I tried with cat command and it worked perfectly.

0

dubiousjim's comment pointed out my issue:

I think git will break hard links every time you checkout a new copy of the file. EDIT: Yes, I just verified it will, even if the hard links are in a single repo

Startec
  • 1,879