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?


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.


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.


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).


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.


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.