Crear un enlace simbólico que no está en el directorio de trabajo

Crear un enlace simbólico que no está en el directorio de trabajo

El comando generalmente funciona de maravilla, pero este ln -si GIT/Settings/session ./.mozilla/firefox/foo.default/simplemente crea una especie de enlace roto que se muestra como un archivo.

¿Porqué es eso?

Incluso sudo ln -fsno funciona.

¿Alguna sugerencia de cómo hacer eso?

Gracias de antemano.

Respuesta1

Por extraño que parezca,

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

hará lo que quieras. La regla general aquí es que debe especificar los destinos de su enlace en relación con la ubicación donde lo coloca.

En Unix y sistemas de archivos similares a Unix, un enlace simbólico es en realidad un archivo especial cuyo contenido es una ruta. Al escribir se crea un vínculo simbólico enln path filenameNombre del archivocuyos contenidos soncamino. Entonces, si, por ejemplo, escribes

ln foo bar/baz

entonces su sistema creará un enlace llamado bar/baz que contiene la ruta "foo". Ese enlace, sin embargo, se romperá: cuando intentas desreferenciar el enlace, tu núcleo lo desreferencia en relación con el enlace.directorio de enlaces– en este caso, barra. Su kernel buscará bar/foo, que no existe.

Si por el contrario escribes

ln ../foo bar/baz

entonces su sistema creará un enlace llamado bar/baz que contiene la ruta "../foo". Al eliminar la referencia a este enlace, su kernel buscará bar/../foo, que existe (y de hecho es lo que desea).

Respuesta2

Puede utilizar la ruta completa del archivo de origen y de destino.

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

información relacionada