Це дійсно призначена поведінка. На ln(1)
чоловіковій сторінці:
Символічні посилання можуть містити довільний текст; якщо пізніше вирішено, відносне посилання інтерпретується стосовно його батьківського каталогу.
Щодо цього, уявіть собі, якби замість цього посилання інтерпретувались відносно джерела, а не від місця призначення. Пізніше розв’язуючи його, вам потрібно буде знати, яким був ваш CWD, коли ви його створили, що є безглуздим, не кажучи вже про неможливим.
Більше того, таким чином ви отримуєте акуратний та компактний метод створення структури каталогів скелетів, який можна скидати куди завгодно у дерево каталогів, не порушуючи символьні посилання.
Щоб привести вам приклад того, що я маю на увазі, скажімо, ви працюєте над проектом, і у вас створена ціла структура каталогів так:
$ ls -1 /home/you/project
thingummies/
widgets/
wizardry/
Тепер припустимо, що ви хотіли створити симпосилання widgets/
досередини wizardry/
. У вас є два варіанти:
$ ln -s /home/you/project/widgets /home/you/project/wizardry
або
$ ln -s ../widgets /home/you/project/wizardry
Якщо потім спробувати переміститися /home/you/project
куди-небудь ще, символьне посилання, створене з першою формою, розірветься, оскільки воно шукає /home/you/project/widgets
. Друга форма збереже функцію символьного посилання, оскільки вона шукає ../widgets
відносно місця, в якому знаходиться, незалежно від того, де це місце може бути в дереві каталогів.