Існує правило , немає такого поняття , як в файл (це твердження означає , що там може бути більше , ніж один в цілому, тому використання означеного артикля не підходить). A - це будь-який шлях, що починається від кореня "/" і позначає файл без неоднозначності незалежно від робочого каталогу. (Див., Наприклад, wikipedia ). absolute path
absolute path
A relative path
- шлях, який слід інтерпретувати, починаючи з іншого каталогу. Це може бути робочий каталог, якщо це relative path
маніпулювання програмою (хоча і не обов'язково). Якщо він знаходиться у символічному посиланні в каталозі, він, як правило, має відношення до цього каталогу (хоча користувач може мати на увазі й інше використання).
Отже, абсолютний шлях - це лише шлях відносно кореневого каталогу.
Шлях (абсолютний або відносний) може містити або не містити символічні посилання. Якщо цього немає, це також дещо не сприймає зміни в сполучній структурі, але це не обов'язково і навіть не бажано. Деякі люди називають canonical path
(або canonical file name
або resolved path
) тим, absolute path
у якому всі символічні посилання були вирішені, тобто були замінені шляхом до туди, до якої вони посилаються. Команди realpath
і readlink
обидва шукають канонічний шлях, але realpath
є лише можливість отримати абсолютний шлях, не намагаючись вирішити символічні посилання (поряд з кількома іншими варіантами для отримання різного роду шляхів, абсолютних чи відносних до деякого каталогу).
Це вимагає декількох зауважень:
- символічні посилання можуть бути вирішені лише в тому випадку, якщо все, до чого вони мають посилатися, вже створене, що, очевидно, не завжди так. Команди
realpath
та readlink
опції для обліку цього.
- каталог на шляху згодом може стати символічним посиланням, що означає, що шлях більше не є
canonical
. Отже, концепція залежить від часу (або навколишнього середовища).
- навіть в ідеальному випадку, коли всі символічні посилання можуть бути вирішені,
canonical path
до файлу все ще може бути більше одного з двох причин:
- розділ, що містить файл, можливо, був встановлений одночасно (
ro
) у кількох точках кріплення.
- можуть бути жорсткі посилання на файл, тобто по суті файл існує в декількох різних каталогах.
Отже, навіть при набагато більш обмеженому визначенні canonical path
до файлу може бути кілька канонічних шляхів до файлу. Це також означає, що класифікатор canonical
дещо неадекватний, оскільки зазвичай передбачає поняття унікальності.
Це розширює коротке обговорення теми у відповіді на інше подібне запитання у Bash: пошук абсолютного шляху, заданого відносним
Мій висновок полягає в тому, що realpath
він краще розроблений і набагато гнучкіший, ніж readlink
. Єдине використання, readlink
яке не охоплено, realpath
- це дзвінок без опції, що повертає значення символічного посилання.