Ссылки, указывающие на абсолютный путь - PullRequest
2 голосов
/ 15 апреля 2009

Это хорошая практика, что ссылки всегда должны указывать на абсолютный путь, а не указывать из текущего каталога?

Я говорю об этом со ссылкой - где мне нужно поддерживать программное обеспечение, и все его предыдущие версии всегда должны указывать на последнюю версию.

Ответы [ 4 ]

2 голосов
/ 15 апреля 2009

Дайте определение «хорошей практики». То, указывает ли ссылка на абсолютный путь или нет, зависит от отношения между файлами.

Если файлы всегда находятся в одинаковых относительных позициях, но их можно перемещать (например, псевдонимы в bin/), они должны быть относительными. Если фактический файл находится в известном месте (например, вы хотите связать файл конфигурации по умолчанию с ~/.config), используйте абсолютный путь.

0 голосов
/ 16 апреля 2009

Не думаю, что могу согласиться с этим как обобщением.

Определенно есть случаи, когда относительная ссылка имеет больше смысла. Например, с деревом каталогов проекта. Если проект резервируется или перемещается (даже дублируется) в другое место, абсолютные ссылки могут быть запутанными и / или катастрофическими.

Даже если вы говорите об общесистемных инструментах, будут случаи, когда относительные ссылки имеют смысл, а иногда нет. Сравните наличие ссылки на очень общий инструмент, такой как grep, с чем-то вроде нескольких версий и целевых разновидностей инструментов компилятора gnu, находящихся на одном хосте. В последнем случае, вероятно, потребуются абсолютные ссылки на конкретные версии инструментов.

Все возвращается к тому, что вы действительно хотите сделать в каждом конкретном случае. Общий ответ заключается в том, что обобщенного ответа не существует.

0 голосов
/ 16 апреля 2009

Я не думаю, что есть "хорошая практика" для этого. Существуют разные варианты использования.

Например, если я храню дерево с программой, установленной локально в /home/.../application, я могу захотеть использовать символическую ссылку «конфигурация по умолчанию» на какую-то конкретную конфигурацию без абсолютного пути. Таким образом, когда я перемещаю все дерево в /home/.../application-other-instance, ссылка на файл конфигурации остается правильной.

С другой стороны, если я захочу сослаться на некоторый глобальный файл в / etc / ... в локальном каталоге, я сделаю это с помощью символической ссылки с абсолютным путем. Это гарантирует, что я указываю на один и тот же файл, куда бы я ни переехал.

Просто подумайте, чего вы хотите достичь, и решение относительно / абсолютного пути будет либо очевидным, либо неуместным. Вероятно, правило «никогда не делай этого»: никогда не ссылаться ни на что в root dir / xxx, через ../../../../../../../xxx

0 голосов
/ 16 апреля 2009

Зависит от того, что вы хотите сделать. Моя система Linux имеет оба вида символических ссылок.

find /usr /bin /lib -type l -print0 | xargs -0 ls -ld | less
...