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
少なくとも 1 つのシンボリック リンクを通過します。実際には、論理パスは存在しますframeworks/av/include/media/stagefright
が、物理パスは存在しません。
次に、問題のシンボリックリンクは../../../
そこから 3 レベル上 ( ) およびさらに上に進みますが、これは明らかに認識していない物理ディレクトリ構造を使用します。ただし、シェルは依然として論理パスを追跡する可能性があります。