내가 작업 중인 루트 폴더가 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
물리적 경로는 그렇지 않습니다.
그런 다음 문제의 심볼릭 링크는 세 단계 위로( ../../../
) 올라가고 거기에서 더 멀리 이동하지만 이는 분명히 사용자가 인식하지 못하는 물리적 디렉토리 구조를 사용합니다. 하지만 쉘은 여전히 논리적 경로를 추적할 수 있습니다.