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 -scomando 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 fooen 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_linka 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_linksolo 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.
source_file(primer) argumento es donde apunta el enlace, que es literalmente lo que ingresa en el comando. Eltarget_file(segundo) argumento se convierte en el nombre del enlace a menos que lo que ingrese sea un directorio, en cuyo caso el nombre del enlace es el mismo que el nombre base delsource_filepero colocado en el directoriotarget_file.lnpágina de manual,targetes el primer argumento (donde los puntos de enlace a ), mientras que el segundo argumento es simplemente denominado como ellink(sourceno se menciona).targety al segundolink( man7.org/linux/man-pages/man1/ln.1.html ). Pero en BSD (incluido OS X) se llama al primerosourcey al segundotarget( freebsd.org/cgi/man.cgi?ln ). Bastante confuso.Usar la bandera
-r(--relative) hará que esto funcione:fuente
-res un GNUism, es decir, no POSIX, por lo que no funcionará en el caso de OP ya que ellncomando estándar de OS X está basado en BSD.Para guardar algo de mecanografía, puedes hacer
fuente
*,?y[...]).bash, por lo que generalmente es una buena idea citarla. Lo malo, debería haber sido más específico.Qué tal si:
fuente