Parece que debería ser simple vincular un archivo a un nuevo archivo en un subdirectorio .... .... sin mover subdirectorios. Pero algo acerca de la sintaxis es desconcertante y contrario a lo que esperaría. Aquí hay un caso de prueba:
mkdir temp
cd temp
mkdir deploy
echo "Contents of the build file!" > deploy/resources.build.php
ln -s deploy/resources.build.php deploy/resources.php
cat deploy/resources.php #bad symlink
¡Esto solo crea un enlace simbólico roto! Estoy ejecutando esto en un script de configuración del entorno de compilación, por lo que quiero evitar cambiar el directorio de trabajo actual si es posible.
ln -s deploy/resources.build.php resources.php
cat deploy/resources.php
Tampoco funciona porque crea el enlace simbólico en el directorio temporal en lugar del subdirectorio de implementación.
cd deploy
ln -s resources.build.php resources.php
cd ..
Esto funciona, pero preferiría saber cómo hacerlo sin cambiar los directorios.
Usando una ruta completa como:
/home/whatever/src/project/temp/stuff/temp/deploy/resources.build.php
Funciona, pero es poco práctico y poco práctico, especialmente en un entorno de compilación donde todas las cosas del proyecto pueden ser diferentes entre compilaciones y similares.
¿Cómo puedo crear un enlace simbólico entre dos archivos en un subdirectorio, sin pasar a ese subdirectorio y fuera de él, y al mismo tiempo darle un nuevo nombre al "alias" del nuevo archivo?
Esto me confundió hasta que me di cuenta de que un enlace simbólico es básicamente un archivo de configuración. es decir, cómo escribiría esos datos de ruta en un archivo de texto simple:
se convierte en:
El error que yo (y probablemente OP) estaba haciendo es pensar en ln necesita saber sobre el archivo que está proyectando. En no le importa. Es solo escribir información de ruta en un archivo. Este es un comando ln perfectamente razonable :
Por lo tanto:
produce un archivo simlink llamado
resources.php
en la./deploy
carpeta que hace referencia al archivoresources.build.php
en la carpeta./deploy/deploy/
.Es poco probable lo que quiere y le da un enlace malo (roto). No hay nada malo con el enlace, si pones ese archivo allí, entonces el enlace funciona. Sin embargo, (como lo señalaron otros) lo que yo y el OP queríamos era:
fuente