Символическая ссылка указывает на, казалось бы, недопустимое местоположение, но она работает

Символическая ссылка указывает на, казалось бы, недопустимое местоположение, но она работает

Предположим, что корневая папка того, с чем я работаю, — это frameworks/av, и эта папка имеет следующее содержимое:

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

В frameworks/av/include/media/stagefright, я нахожу эту ссылку, foundation, которая, судя по описанию, должна указывать на frameworks/av/foundation/...:

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

foundationЧто меня действительно озадачивает, так это то, что в папке нет папки frameworks/av, но я могу спокойно перейти по ссылке. Настоящая цель, как указано в readlink -f foundation, — это frameworks/av/media/libstagefright/foundation/include/media/stagefright/foundation.

Что здесь происходит? Как можно foundationволшебным образом перевести в media/libstagefright/foundation?

решение1

Когда вы спускаетесь, frameworks/av/include/media/stagefrightесть по крайней мере одна символическая ссылка, через которую вы проходите. По сути, логический путь есть, frameworks/av/include/media/stagefrightно физический — нет.

Затем рассматриваемая симлинк идет на три уровня вверх ( ../../../) и далее оттуда, но это использует физическую структуру каталогов, о которой вы, очевидно, не знаете. Однако ваша оболочка все еще может отслеживать логический путь.

СравниватьПочему ls ..отображается реальный родительский контент, когда я нахожусь внутри каталога символической ссылки?

Связанный контент