Criando um link simbólico que não está no diretório de trabalho

2

o comando geralmente funciona como um encanto, mas esse ln -si GIT/Settings/session ./.mozilla/firefox/foo.default/ cria apenas um tipo de link quebrado mostrado como um arquivo.

Por que isso?

Mesmo sudo ln -fs não funciona.

Alguma sugestão de como fazer isso?

Obrigado antecipadamente.

    
por LeMike 22.09.2012 / 18:58

2 respostas

4

Por mais estranho que pareça,

ln -si ../../../GIT/Settings/session ./.mozilla/firefox/foo.default/

fará o que você quiser. A regra básica aqui é que você deve especificar seus alvos de link em relação ao local onde você está colocando o link.

Em sistemas de arquivos Unix e Unix-like, um link simbólico é na verdade um arquivo especial cujo conteúdo é um caminho. Digitar ln path filename cria um link simbólico no nome do arquivo cujo conteúdo é caminho . Então, se, por exemplo, você digitar

ln foo bar/baz

então o seu sistema irá criar um link chamado bar / baz contendo o caminho "foo". Esse link, no entanto, será quebrado - quando você tentar desreferenciar o link, o kernel o desreferencia em relação ao diretório de link - neste caso, bar. Seu kernel irá procurar por bar / foo, que não existe.

Se, por outro lado, você digitar

ln ../foo bar/baz

então o seu sistema irá criar um link chamado bar / baz contendo o caminho "../foo". Ao desreferenciar este link, seu kernel irá procurar por bar /../ foo, que existe (e é de fato o que você quer).

    
por 22.09.2012 / 23:21
2

Você pode usar o caminho completo do arquivo de origem e de destino

ln -s (full path to /foo) (full path to bar/baz)
    
por 21.11.2012 / 01:37