Символические ссылки не удаляют себя из пути

Несколько дней назад я работал с символическими ссылками в Linux. Я пытался с их помощью решить одну задачу, но мне это не удалось. Как оказалось, они не удаляют себя из полного пути к файлу, на что я рассчитывал. Позже выяснилось, что похожим образом себя ведут и их братья в Windows.

Рассмотрим схему, изображенную на рисунке ниже.

На ней показано четыре каталога: a, b, c, d и символическая ссылка L, которая ведет в каталог c. Пути «b/c/» и «a/L/» являются вроде бы как эквивалентными, по крайней мере я так считал еще недавно. Рассмотрим последовательность команд:

$ cd b/c/
$ cd d/
$ cd ../../

Где мы окажемся? В первой команде мы переходим в каталог с. Во второй заходим в каталог d. В третьей поднимаемся на два каталога вверх. То есть, сначала выходим из d, попадаем в с, а затем в b. Таким образом, мы оказываемся в каталоге b. Теперь рассмотрим такую последовательность:

$ cd a/L/
$ cd d/
$ cd ../../

Изменилась только первая команда. Вроде бы мы опять должны попасть в каталог b. Но не тут-то было. Мы окажемся в каталоге a. Дело в том, что к третьей команде полный путь будет выглядеть так: «a/L/d/». Поэтому, перейдя на два каталога вверх, мы окажемся в a, а не в b.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *