Disons que j'ai deux fichiers file1et file2:
$ echo aaa >file1
$ ln file1 file2
Ensuite, je vérifie que les inodes sont les mêmes:
$ ls -i
18749779 file1 18749779 file2
ce qui montre que les deux fichiers sont en fait les mêmes. Maintenant, je modifie file1dans Emacs, et j'ajoute une ligne avec par exemple le texte bbb, je l'enregistre et quitte Emacs.
Maintenant je reçois:
$ ls -i
18749781 file1 18749779 file2
$ cat file1
aaa
bbb
$ cat file2
aaa
Le lien dur est donc rompu. Notez que cela ne se produit pas lorsque je modifie le fichier vimou si je le fais simplement echo bbb >>file1.
Comment puis-je empêcher Emacs de rompre les liens durs?
Mise à jour:
Notez que j'ai
(require 'backup-dir)
(setq bkup-backup-directory-info
'((t "~/.emacs-backups/" ok-create full-path )))
dans mon ~/.emacsfichier init. Si je modifie en file1utilisant à la emacs -Q file1place, j'obtiens un fichier appelé file1~dans le répertoire courant qui est lié à file2(a le même inode) mais file1~n'a pas été modifié (il est donc identique à l'ancien file1). Ce n'est pas ce que je souhaite. Je voudrais les deux file1et file2être le même fichier, et inclure le contenu du fichier mis à jour ..
(setq backup-by-copying t)à mon~/.emacsfichier init, cela fonctionne comme souhaité ..