Digamos que tengo dos archivos file1
y file2
:
$ echo aaa >file1
$ ln file1 file2
Luego verifico que los inodes son los mismos:
$ ls -i
18749779 file1 18749779 file2
lo que muestra que los dos archivos son realmente iguales. Ahora edito file1
en Emacs, y agrego una línea con, por ejemplo, el texto bbb
, y lo guardo y salgo de Emacs.
Ahora obtengo:
$ ls -i
18749781 file1 18749779 file2
$ cat file1
aaa
bbb
$ cat file2
aaa
Entonces el enlace duro está roto. Tenga en cuenta que esto no sucede cuando edito el archivo vim
, o si simplemente lo hago echo bbb >>file1
...
¿Cómo puedo evitar que Emacs rompa enlaces duros?
Actualizar:
Tenga en cuenta que tengo
(require 'backup-dir)
(setq bkup-backup-directory-info
'((t "~/.emacs-backups/" ok-create full-path )))
en mi ~/.emacs
archivo init Si edito file1
usando en su emacs -Q file1
lugar, obtengo un archivo llamado file1~
en el directorio actual que enlaza file2
(tiene el mismo inodo) pero file1~
no ha sido modificado (por lo que es idéntico al anterior file1
). Esto no es lo que deseo. Me gustan los dos file1
, y file2
al ser el mismo archivo, e incluya el contenido del archivo actualizado ..
(setq backup-by-copying t)
a mi~/.emacs
archivo init, funciona como se desea ..Respuestas:
@Hakon resolvió su propio problema con:
Si prefiere mantener el comportamiento predeterminado y usar
back-up-by-copying
solo para archivos vinculados, puede usar esto en su lugar (y dejarlobackup-by-copying
configurado ennil
):Además, como señaló @Harald, puede establecer
back-up-by-copying
como una variable local de archivo en su lugar, para activar esta función solo para archivos individuales.La explicación de este comportamiento del manual de Emacs :
Vea la página vinculada para más discusión.
fuente