Digamos que eu tenho dois arquivos file1
e file2
:
$ echo aaa >file1
$ ln file1 file2
Então eu verifico se os inodes são os mesmos:
$ ls -i
18749779 file1 18749779 file2
o que mostra que os dois arquivos são realmente iguais. Agora edito file1
no Emacs e adiciono uma linha com, por exemplo, o texto bbb
, salve-o e saia do Emacs.
Agora eu recebo:
$ ls -i
18749781 file1 18749779 file2
$ cat file1
aaa
bbb
$ cat file2
aaa
Portanto, o link rígido está quebrado. Observe que isso não acontece quando edito o arquivo vim
ou simplesmente o faço echo bbb >>file1
.
Como posso impedir que o Emacs quebre links físicos?
Atualizar:
Note que eu tenho
(require 'backup-dir)
(setq bkup-backup-directory-info
'((t "~/.emacs-backups/" ok-create full-path )))
no meu ~/.emacs
arquivo init. Se eu editar file1
usando emacs -Q file1
, em vez disso, recebo um arquivo chamado file1~
no diretório atual vinculado a file2
(tem o mesmo inode), mas o file1~
não foi modificado (portanto, é idêntico ao antigo file1
) .. Não é isso que desejo. Eu gostaria tanto file1
e file2
ser o mesmo arquivo, e para incluir o conteúdo do arquivo atualizado ..
(setq backup-by-copying t)
ao meu~/.emacs
arquivo init, ele funcionará como desejado .. #Respostas:
@Hakon resolveu seu próprio problema com:
Se você preferir manter o comportamento padrão e usar
back-up-by-copying
apenas arquivos vinculados, você pode usá-lo (e deixarbackup-by-copying
definido comonil
):Além disso, como apontado por @Harald, você pode definir
back-up-by-copying
como uma variável local do arquivo, para ativar esse recurso apenas para arquivos individuais.A explicação desse comportamento no manual do Emacs :
Veja a página vinculada para mais discussões.
fonte