Um link simbólico relativo é relativo ao seu diretório pai, que é irrelevante do diretório atual de qualquer processo ou do diretório inicial de qualquer usuário.
Por exemplo, se /some/dir/link
for um link simbólico para ../foo/bar
, isso é um link simbólico para /some/dir/../foo/bar
( /some/foo/bar
se /some/dir
não for um link simbólico), independentemente do diretório atual ou inicial .
Se você quiser criar um novo symlink para um arquivo relativo ao diretório atual (por exemplo, o arquivo bin/ls
no diretório atual /home/stephane
), então você pode fazer (em shells parecidos com POSIX ou fish
):
ln -s -- "$PWD/bin/ls" /some/dir/link
O que criaria um symlink absoluto (para /home/stephane/bin/ls
). Para criar um link simbólico relativo, você precisaria:
ln -s ../../home/stephane/bin/ls /some/dir/link
(assumindo /some
e /some/dir
não são eles próprios links simbólicos)
O GNU ln
tem uma opção -r
para ajudar você a calcular esse caminho:
ln -rs bin/ls /some/dir/link
(que criaria o mesmo symlink para ../../home/stephane/bin/ls
).