Diferença entre / bin e / usr / bin

83

Eu li isso neste site e não faz sentido.

http://rcsg-gsir.imsb-dsgi.nrc-cnrc.gc.ca/documents/basic/node32.html

Quando o UNIX foi escrito pela primeira vez /bine /usr/binresidia fisicamente em dois discos diferentes: /binestar em um disco menor, mais rápido (mais caro) e /usr/binem um disco maior e mais lento. Agora, /biné um link simbólico para /usr/bin: eles são essencialmente o mesmo diretório.

Mas quando lsa /binpasta, ele tem muito menos conteúdo do que a /usr/binpasta (pelo menos no meu sistema em execução).

Então alguém pode explicar a diferença?

Quem sou eu
fonte
esses caras não estão falando de uma máquina específica?
tshepang
11
@tshepang bem, se você continuar clicando, no artigo você alcançará Introdução Básica ao UNIX / linux . Então eu diria que não, eles não estamos falando de uma máquina específica
xenoterracide
3
@ xeno Sim, eu fiz, mas não fiquei por tempo suficiente. Nesse caso, essa página deve ser retirada. Tão enganador.
tshepang
3
Esse documento pode ser considerado "referência histórica". Se você olhar a página "sobre este documento", verá que ele foi protegido por direitos autorais originalmente em 1993. Se você olhar a bibliografia, a fonte mais recente é 1997. A maioria dos sistemas operacionais populares semelhantes a unix mudou substancialmente desde então.
Gabe.
11
Qualquer pessoa interessada no histórico dessa configuração deve ler o seguinte: lists.busybox.net/pipermail/busybox/2010-December/074114.html
JDS

Respostas:

73

O que? no não /bin/é um link simbólico para /usr/binqualquer sistema compatível com FHS. Observe que ainda existem Unices e Linux populares que ignoram isso - por exemplo, /bine /sbinestão vinculados ao /usr/binArch Linux (o raciocínio é que você não precisa /binpara o modo de resgate / usuário único, pois você apenas inicializava um live CD).

/bin

contém comandos que podem ser usados ​​pelo administrador do sistema e pelos usuários, mas que são necessários quando nenhum outro sistema de arquivos é montado (por exemplo, no modo de usuário único). Também pode conter comandos usados ​​indiretamente por scripts

/usr/bin/

Este é o diretório principal de comandos executáveis ​​no sistema.

Essencialmente, /bincontém executáveis ​​exigidos pelo sistema para reparos de emergência, inicialização e modo de usuário único. /usr/bincontém todos os binários que não são necessários.

Observarei que eles podem estar em discos / partições separados, /bindevem estar no mesmo disco que /. /usr/binpode estar em outro disco - embora observe que essa configuração foi interrompida por um tempo (é por isso que, por exemplo, o systemd avisa sobre essa configuração na inicialização).

Para total correção, alguns departamentos podem ignorar o FHS, como acredito que seja apenas um padrão Linux, não sei se ele ainda foi incluído no SUS, Posix ou qualquer outro padrão UNIX, embora deva ser IMHO. É uma parte do padrão LSB embora.

xenoterracida
fonte
Então, isso significa que eu posso compartilhar / usr / bin entre duas distros? como o ubuntu 10.04 e 10.10?
balki
4
@balki não, eles ainda precisam estar vinculados corretamente, o que significa que precisam usar a versão correta das bibliotecas contra as quais são construídas.
Xenoterracide
6
/biné um link para /usr/binalguns departamentos, como (algumas versões do?) Solaris.
Gilles
11
@balki, você pode compartilhar /usrentre duas distros muito semelhantes, embora eu não tente, a menos que você saiba o que está fazendo e esteja preparado para que o experimento falhe de uma maneira que faça o computador não inicializar ou comer seus dados. Também estar ciente de que muitas das grandes diferenças entre 10.04 e 10.10 será em/usr
xenoterracide
2
Vamos incluir também que / usr / local / bin é onde estão instalados os programas que não estão incluídos na sua distribuição, mas que se destinam ao uso em todo o sistema.
Donato
56

/sbin - Binários necessários para inicialização, reparo ou manutenção do sistema de baixo nível (execução nível 1 ou S)

/bin - Binários necessários para o funcionamento normal / padrão do sistema em qualquer nível de execução.

/usr/bin - Binários de aplicativos / distribuição destinados a serem acessados ​​por usuários logados localmente

/usr/sbin - Binários de aplicativos / distribuição que suportam ou configuram coisas em / sbin.

/usr/share/bin - Binários ou scripts de aplicativos / distribuição destinados a serem acessados ​​pela web, ou seja, aplicativos da web Apache

*local*- Binários que não fazem parte de uma distribuição; compilado localmente ou instalado manualmente. Geralmente, nunca há um, /local/binmas sempre um /usr/local/bine /usr/local/share/bin.

LawrenceC
fonte
4
Ah, e você pode colocar tudo isso em um disco ou partição separada, se quiser, por segurança ou o que for. A idéia é que você pode desmontar / usr e o sistema terá tudo o que precisa para o funcionamento básico, mas não pode executar aplicativos que não sejam do sistema.
LawrenceC
11
Eu gostaria de saber isso anos atrás. Melhor explicação que já vi até agora. Não posso dizer que pareci muito, mas feliz por finalmente saber a resposta.
David
2
Esta é uma ótima resposta. eu iria doar-lhe 10 dos meus próprios pontos se eu pudesse
amphibient
@ultrasawblade é /usr/bindesmontado automaticamente quando não há usuários conectados? Por exemplo, quando o LINUX é inicializado e apresenta a autenticação de login, está /usr/binmontado ou não?
11
Não, ele é montado na inicialização e permanece montado, a menos que você o desmonte, a menos que seu sistema esteja configurado de maneira incomum.
LawrenceC
17

Algum tipo de "atualização" sobre esse problema:

Recentemente, algumas distribuições Linux estão se fundindo /binem /usr/bine modo semelhante /libem /usr/lib. Às vezes também (/usr)/sbinpara /usr/bin(Arch Linux). Portanto, /usrespera-se que esteja disponível ao mesmo tempo que /.

A distinção entre as duas hierarquias é considerada uma complexidade desnecessária agora. A idéia já estava /bindisponível apenas na inicialização, mas ter um ramdisk inicial torna isso obsoleto.

Eu sei que o Fedora Linux (2011) e o Arch Linux (2012) estão indo dessa maneira e o Solaris faz isso há muito tempo (> 15 anos).

JonnyJD
fonte
8

No Linux /bine /usr/binainda estão separados porque é comum ter /usrem uma partição separada (embora essa configuração seja interrompida de maneira sutil, às vezes). In /binsão todos os comandos que você precisará se tiver /montado apenas .

No Solaris e Arch Linux (e provavelmente outros), /binhá um link simbólico para /usr/bin. O Arch também possui /sbine /usr/sbinvinculou /usr/bin.

É importante ressaltar que a declaração /binreferente aos comandos "administrador do sistema" e /usr/binreferente aos comandos do usuário não é verdadeira (a menos que você pense bashe lsseja apenas para administradores, caso em que você tem muito a aprender). Os comandos do administrador estão em /sbine /usr/sbin.

bahamat
fonte
11
quem disse que biné apenas para administradores de sistema? sbiné para isso que serve.
Xenoterracide
Você citou errado. Desculpe, eu estava lendo muito rápido.
bahamat
5

Existem muitos sistemas baseados em UNIX. Linux, AIX, Solaris, BSD, etc. A citação original fornece um contexto histórico que se aplica a todos os tipos. Se você olhar para qualquer sistema específico, verá resultados diferentes. A última frase da citação original é específica apenas para algumas versões e distribuições.

Chris Quenelle
fonte