符號連結指向看似無效的位置,但它有效

符號連結指向看似無效的位置,但它有效

假設我正在使用的根資料夾是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 foundationframeworks/av/media/libstagefright/foundation/include/media/stagefright/foundation

這裡發生了什麼事?怎麼能foundation神奇地轉化為media/libstagefright/foundation

答案1

當你進入時,frameworks/av/include/media/stagefright至少會經歷一個符號連結。實際上,邏輯路徑是,frameworks/av/include/media/stagefright但物理路徑不是。

然後,有問題的符號連結向上三層 ( ../../../) 並進一步,但這使用了您顯然不知道的物理目錄結構。不過,您的 shell 可能仍會追蹤邏輯路徑。

比較ls ..當我位於符號連結目錄中時,為什麼會顯示真正的父內容?

相關內容