Ligação simbólica para ~ / em vez de ~ / [caminho / arquivo]

0

Eu movi todos os meus arquivos de ponto para fora ~/ em ~/data/dotfiles

Eu então fiz ln -s ~/data/dotfiles/[filename] ~/

Minha intenção foi ln -s ~/data/dotfiles/[filename] ~/[filename]

Isso incluiu meus .vimrc , .bashrc E outros

Agora, quando abro uma sessão de terminal ou abro o vim, recebo too many levels of symbolic links.

Não tenho certeza se excluo o link simbólico do meu diretório pessoal ou do diretório em que os arquivos residem.

Qualquer ajuda seria apreciada.

como por pedido: jsw:dotfiles jsw$ ls -l ~/.vimrc ~/data/dotfiles/.vimrc lrwxr-xr-x 1 jsw staff 6 1 Aug 13:54 /Users/jsw/.vimrc -> .vimrc -rw-r--r-- 1 jsw staff 11044 31 Jul 10:51 /Users/jsw/data/dotfiles/.vimrc

    
por Ravenous 01.08.2014 / 19:40

1 resposta

2

lrwxr-xr-x 1 jsw staff 6 1 Aug 13:54 /Users/jsw/.vimrc -> .vimrc

Você cometeu um erro; isso foi produzido pelo equivalente de:

ln -s .vimrc .vimrc

Você poderia ter feito algo mais intrincado do que isso ( ln -s foo/../.vimrc .vimrc ), mas em qualquer caso, desde que não haja um arquivo .vimrc real, ln criará o link, mas será um insucesso. Se você tentar acessá-lo, verá:

foobar: ./.vimrc:
Too many levels of symbolic links

Onde "foobar" é o nome do aplicativo que tentou o acesso. Basta excluir o link e tente novamente. Além de ls , stat .vimrc mostrará para você o que um arquivo aponta. A saída para este começaria:

File: ‘.vimrc’ -> ‘.vimrc’

Opa! readlink é ainda mais simples:

> readlink .vimrc
.vimrc

Dar apenas o caminho para o qual o link aponta. Se esse é o mesmo caminho exato do arquivo, é um link circular. Você quer ver:

> readlink .vimrc
data/dotfiles/.vimrc
    
por 01.08.2014 / 20:14