Ссылки в / usr / bin или / usr / local / bin: жесткие или символические?

Для ссылок, расположенных в /usr/bin и в /usr/local/bin , лучше ли быть жестким или символичным? Кажется, они все символичны? Зачем?

Когда ссылки помещаются в /usr/bin или /usr/local/bin , это часто происходит потому, что фактический двоичный файл находится где-то в другом месте. Почему он живет где-то в другом месте? Обычно потому, что он является частью группы файлов, часто в своем собственном подкаталоге, от которого он может работать. Почему все эти файлы не могут быть сброшены в /usr/bin или /usr/local/bin ? Поскольку эти местоположения предназначены только для двоичных файлов, двоичные файлы находятся на верхнем уровне этих каталогов, и никакие подкаталоги не разрешены.

Итак, почему бы нам не использовать жесткую ссылку? Поскольку жесткая ссылка на файл считается равным статусу исходного файла (он имеет один и тот же индекс), и файл не будет удален, пока есть жесткая ссылка на него. Напротив, символическая ссылка – это просто указатель на «реальную вещь». На практике установка жесткой ссылки на двоичный файл, который живет где-то в другом месте, не имеет большого смысла, потому что если эти другие файлы в этом другом каталоге / подкаталоге были удалены, файл не сможет функционировать сам по себе.

Примером этого могут служить различные утилиты TeX, которые живут в /usr/bin . Если вы посмотрите на них, вы увидите, что многие из них указывают на файлы, которые фактически находятся в /usr/share/texlive/texmf-dist/scripts/ . Вы можете увидеть их, например, выполнив ls -la | grep texmf ls -la | grep texmf .

Как упоминает мура, другая причина заключается в том, что жесткие ссылки не работают в файловых системах.

Другая ситуация, когда ссылки используются для файлов в /usr/bin или /usr/local/bin – это альтернативная система Debian. В этом случае двоичный код может быть символической ссылкой, указывающей на символическую ссылку в /etc/alternatives , которая затем указывает на фактический двоичный файл, часто снова сам в /usr/bin .

Пример:

 ls -la /usr/bin/awk lrwxrwxrwx 1 root root 21 Jul 31 2013 /usr/bin/awk -> /etc/alternatives/awk ls -la /etc/alternatives/awk lrwxrwxrwx 1 root root 13 Aug 11 2013 /etc/alternatives/awk -> /usr/bin/gawk 

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