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

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

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

Por que é que?

Mesmo sudo ln -fsnão funciona.

Alguma sugestão de como fazer isso?

Desde já, obrigado.

Responder1

Por mais estranho que possa parecer,

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

fará o que você quiser. A regra aqui é que você deve especificar os destinos do link em relação ao local onde está colocando o link.

Em sistemas de arquivos Unix e semelhantes, um link simbólico é na verdade um arquivo especial cujo conteúdo é um caminho. A digitação cria um link simbólico emln path filenamenome do arquivocujo conteúdo écaminho. Então, se, por exemplo, você digitar

ln foo bar/baz

então seu sistema criará um link chamado bar/baz contendo o caminho "foo". Esse link, no entanto, será quebrado – quando você tentar desreferenciar o link, seu kernel o desreferenciará em relação ao link.diretório de links– 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 seu sistema criará um link chamado bar/baz contendo o caminho "../foo". Desreferenciando este link, seu kernel irá procurar por bar/../foo, que existe (e é de fato o que você deseja).

Responder2

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

ln -s (full path to /foo) (full path to bar/baz)

informação relacionada