O link simbólico aponta para um local aparentemente inválido, mas funciona

O link simbólico aponta para um local aparentemente inválido, mas funciona

Vamos supor que a pasta raiz com a qual estou trabalhando seja frameworks/av, e esta pasta tenha o seguinte conteúdo:

-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/

Em frameworks/av/include/media/stagefright, encontro este link, foundationque pela sua descrição deve apontar para frameworks/av/foundation/...:

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

O que realmente me intriga é que não há nenhuma pasta foundation, frameworks/avmas posso seguir o link perfeitamente. O verdadeiro alvo, conforme dado por readlink -f foundation, é frameworks/av/media/libstagefright/foundation/include/media/stagefright/foundation.

O que está acontecendo aqui? Como pode foundationser traduzido magicamente em media/libstagefright/foundation?

Responder1

Quando você desce, frameworks/av/include/media/stagefrighthá pelo menos um link simbólico pelo qual você passa. Na verdade, o caminho lógico existe frameworks/av/include/media/stagefright, mas o físico não.

Em seguida, o link simbólico em questão sobe três níveis ( ../../../) e mais adiante, mas usa a estrutura de diretórios físicos que você obviamente não conhece. Seu shell ainda pode rastrear o caminho lógico.

CompararPor que ls ..mostra o conteúdo pai real quando estou dentro de um diretório de link simbólico?

informação relacionada