Quando os links são colocados em /usr/bin
ou /usr/local/bin
, geralmente isso ocorre porque o binário real está em outro lugar. Por que está morando em outro lugar? Geralmente porque é parte de um grupo de arquivos, muitas vezes em seu próprio subdiretório, do qual depende para ser executado. Por que todos esses arquivos não podem ser despejados em /usr/bin
ou /usr/local/bin
? Como esses locais são apenas para binários, os binários ficam no nível superior desses diretórios e nenhum subdiretório é permitido.
Então, por que não usamos um link físico? Porque um link rígido para um arquivo é considerado como de status igual ao arquivo original (ele compartilha o mesmo inode) e o arquivo não será excluído enquanto houver um link físico para ele. Em contraste, um link simbólico é simplesmente um ponteiro para "a coisa real". Na prática, colocar um link físico em um arquivo binário que está morando em outro lugar não faria muito sentido, porque se esses outros arquivos naquele outro subdiretório de local / localidade fossem removidos, o arquivo não poderia funcionar sozinho.
Um exemplo disso são os vários utilitários TeX, que vivem em /usr/bin
. Se você olhar para eles, verá que muitos deles apontam para arquivos que estão realmente em /usr/share/texlive/texmf-dist/scripts/
. Você pode ver isso, por exemplo, fazendo ls -la | grep texmf
.
Como mencionado, outra razão é que os hard links não funcionam nos sistemas de arquivos.
Outra situação na qual os links são usados para arquivos em /usr/bin
ou /usr/local/bin
é o sistema de alternativas do Debian. Nesse caso, um binário pode ser um link simbólico apontando para um link simbólico em /etc/alternatives
, que então aponta para o binário real, muitas vezes novamente em si mesmo em /usr/bin
.
Exemplo:
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
É bastante óbvio, neste caso, que um link simbólico é o mecanismo correto, porque ele está apontando para qualquer um dos vários binários possíveis.