El enlace simbólico apunta a una ubicación aparentemente no válida, pero funciona

El enlace simbólico apunta a una ubicación aparentemente no válida, pero funciona

Supongamos que la carpeta raíz de lo que estoy trabajando es frameworks/avy esta carpeta tiene el siguiente contenido:

-rw-rw-r--  1 <user> <user>    94 Mar 21 14:34 Android.bp
drwxrwxr-x  8 <user> <user>  4096 Mar 21 14:34 camera/
-rw-rw-r--  1 <user> <user>  5394 Jul 16  2018 CleanSpec.mk
drwxrwxr-x  4 <user> <user>  4096 Jul 16  2018 cmds/
drwxrwxr-x  8 <user> <user>  4096 Jul 16  2018 drm/
drwxrwxr-x  2 <user> <user>  4096 Mar 26 21:30 .git/
drwxrwxr-x  8 <user> <user>  4096 Mar 21 14:34 include/
drwxrwxr-x 25 <user> <user>  4096 Mar 21 14:34 media/
-rw-rw-r--  1 <user> <user>     0 Mar  2  2018 MODULE_LICENSE_APACHE2
-rw-rw-r--  1 <user> <user> 17680 Mar  2  2018 NOTICE
-rw-rw-r--  1 <user> <user>    76 Jul 16  2018 OWNERS
drwxrwxr-x  3 <user> <user>  4096 Mar 21 14:34 packages/
drwxrwxr-x 14 <user> <user>  4096 Mar 21 14:34 services/
drwxrwxr-x  2 <user> <user>  4096 Jul 16  2018 soundtrigger/
drwxrwxr-x  3 <user> <user>  4096 Mar 21 14:34 tools/

En frameworks/av/include/media/stagefright, encuentro este enlace, foundationque por su descripción debería apuntar a frameworks/av/foundation/...:

lrwxrwxrwx 1 <user> <user> 57 Jul 16 2018 foundation -> ../../../foundation/include/media/stagefright/foundation//

Lo que realmente me desconcierta es que no hay ninguna carpeta foundationen frameworks/av, pero puedo seguir el enlace sin problemas. El objetivo real, según lo indicado por readlink -f foundation, es frameworks/av/media/libstagefright/foundation/include/media/stagefright/foundation.

¿Que esta pasando aqui? ¿Cómo se puede foundationtraducir mágicamente media/libstagefright/foundation?

Respuesta1

Cuando desciendes, frameworks/av/include/media/stagefrighthay al menos un enlace simbólico por el que pasas. En efecto, el camino lógico lo es frameworks/av/include/media/stagefrightpero el físico no.

Luego, el enlace simbólico en cuestión sube tres niveles ( ../../../) y se aleja de allí, pero utiliza la estructura de directorio físico que obviamente no conoce. Sin embargo, es posible que su shell aún rastree la ruta lógica.

Comparar¿Por qué ls ..muestra contenido principal real cuando estoy dentro de un directorio de enlaces simbólicos?

información relacionada