Si crea un enlace simbólico a una ruta relativa, lo almacenará como un enlace simbólico relativo, no absoluto como muestra su ejemplo. Esto generalmente es algo bueno. Los enlaces simbólicos absolutos no funcionan cuando el sistema de archivos está montado en otro lugar.
La razón por la que su ejemplo no funciona es que es relativo al directorio padre del enlace simbólico y no a dónde ln
se ejecuta.
Tu puedes hacer:
$ pwd
/home/beau
$ ln -s foo/bar.txt bar.txt
$ readlink -f /home/beau/bar.txt
/home/beau/foo/bar.txt
O para eso importa:
$ cd foo
$ ln -s foo/bar.txt ../bar.txt
Es importante darse cuenta de que el primer argumento posterior ln -s
se almacena como el objetivo del enlace simbólico. Puede ser cualquier cadena arbitraria (con las únicas restricciones de que no puede estar vacía y no puede contener el carácter NUL), pero en el momento en que se usa y resuelve el enlace simbólico, esa cadena se entiende como una ruta relativa al directorio padre del enlace simbólico (cuando no comienza con /
).