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 ).