Por que os 'mesmos' executáveis estão em '/ usr / bin /' e '/ usr / bin / X11 /'? Eles são realmente os mesmos?

1

Com o Ubuntu 14.04 LTS. Eu estou trabalhando em uma instalação personalizada de gcc que eu quero colocar ao lado da versão suportada que é muito antiga para meus propósitos.

Meu computador tem a versão 4.8.4 instalada do repositório do Ubuntu, e eu estava olhando para whereis gcc para ver como os arquivos gcc são organizados no sistema de arquivos normalmente.

Em seguida, observei que os mesmos executáveis são armazenados em /usr/bin/ e /usr/bin/X11 (usando ll -L nas duas pastas). Surgem as seguintes questões:

  • Em geral, qual é o objetivo de /usr/bin/X11/ como distinto de /usr/bin/ ? Examinei a hierarquia padrão do sistema de arquivos e /usr/bin/X11/ não é um diretório padrão;
  • Em particular, é correto presumir que os arquivos em /usr/bin/X11/ são apenas um imitador daqueles em /usr/bin/ como regra? O novo gcc não possui a pasta <mount point>/bin/X11 em sua árvore. Isso é útil para saber, a fim de redirecionar com confiança os links simbólicos existentes em /usr/bin/X11 para os executáveis da nova versão (não-diabo-em-detalhes, o ponto de cautela).

Obrigado por pensar junto.

    
por XavierStuvw 11.02.2017 / 11:13

2 respostas

2

Era uma vez não havia GUI. E quando o X Window System apareceu , ele veio com maravilhosos programas gráficos como xterm e xclock e assim por diante, e com utilitários como xrdb e xmodmap . E as pessoas costumavam colocar esses programas gráficos em um diretório especial, que com o tempo se tornou /usr/bin/X11 . (X 11 porque a versão final do X Protocol é 11, especificamente a versão X 11 lançamento 6 ponto 4, X11R6.4; antes de X11 havia e X9 e um X10.)

Mas hoje em dia todos os executáveis vivem em /bin e /usr/bin e /sbin e /usr/sbin ; enquanto /usr/bin/X11 não serve mais, ele ainda é criado como um link simbólico para /usr/bin para manter a compatibilidade com os antigos administradores de sistemas e scripts antigos, que são usados para xterm sendo /usr/bin/X11/xterm .

Portanto, a resposta é que não são os executáveis que são os mesmos em /usr/bin e /usr/bin/X11 : é /usr/bin/X11 , que é o mesmo que /usr/bin .

Se você olhar, notará que /usr/bin/X11 é um link simbólico para . . Isso é chamado de um link simbólico relativo : /usr/bin/X11 sendo um arquivo em /usr/bin e um link simbólico apontando para o diretório atual, . , isso torna /usr/bin/X11 um sinônimo para /usr/bin . / p>     

por AlexP 11.02.2017 / 16:03
1

Para descobrir para que o caminho e o arquivo realmente apontam, faça

$ realpath /usr/bin/X11
/usr/bin

Variante Fun:

$ myDir=/usr/bin/X11
$ echo $(realpath -s $myDir) is in fact $(realpath $myDir)
/usr/bin/X11 is in fact /usr/bin

Esta é a página de manual on-line de realpath .

Obrigado @AlexP e @muru por me colocar no caminho certo

    
por XavierStuvw 11.02.2017 / 13:00