La forma más fácil de vincular al directorio actual como una ruta absoluta, sin escribir la cadena de ruta completa sería
ln -s "$(pwd)/foo" ~/bin/foo_link
El target
(primer) argumento para el ln -s
comando funciona en relación con la ubicación del enlace simbólico, no con su directorio actual. Es útil saber que, esencialmente, el enlace simbólico creado (el segundo argumento) simplemente contiene el texto que proporciona para el primer argumento.
Por lo tanto, si haces lo siguiente:
cd some_directory
ln -s foo foo_link
y luego mover ese enlace
mv foo_link ../some_other_directory
ls -l ../some_other_directory
verá que foo_link
intenta señalar foo
en el directorio en el que reside. Esto también funciona con enlaces simbólicos que apuntan a rutas relativas. Si haces lo siguiente:
ln -s ../foo yet_another_link
y luego pasar yet_another_link
a otro directorio y verificar hacia dónde apunta, verá que siempre apunta ../foo
. Este es el comportamiento previsto, ya que muchas veces los enlaces simbólicos pueden ser parte de una estructura de directorio que puede residir en varias rutas absolutas.
En su caso, cuando cree el enlace escribiendo
ln -s foo ~/bin/foo_link
foo_link
solo tiene un enlace a foo
, relativo a su ubicación. Poner $(pwd)
delante del nombre del argumento objetivo simplemente agrega la ruta absoluta del directorio de trabajo actual, de modo que el enlace se crea con un objetivo absoluto.