Diferencia entre / bin y / usr / bin

83

Leí esto en este sitio web y no tiene sentido.

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

Cuando UNIX se escribió por primera vez, /biny /usr/binresidía físicamente en dos discos diferentes: /binestar en un disco más pequeño más rápido (más costoso) y /usr/binen un disco más grande y más lento. Ahora, /bines un enlace simbólico a /usr/bin: son esencialmente el mismo directorio.

Pero cuando lsla /bincarpeta, tiene mucho menos contenido que la /usr/bincarpeta (al menos en mi sistema en ejecución).

Entonces, ¿alguien puede explicar la diferencia?

quién soy
fuente
¿No están esos tipos hablando de una máquina específica?
tshepang
1
@tshepang bien si sigues haciendo clic arriba, en el artículo llegarás a Introducción básica a UNIX / linux . Así que yo diría que no, que no estamos hablando de una máquina específica
xenoterracide
3
@xeno Sí, lo hice, pero no me quedé el tiempo suficiente. En ese caso, esa página debe ser eliminada. Tan engañoso.
tshepang
3
Ese documento puede considerarse 'referencia histórica'. Si mira la página "acerca de este documento", verá que tenía derechos de autor originalmente en 1993. Si mira la bibliografía, su fuente más reciente es 1997. La mayoría de los sistemas operativos populares tipo Unix han cambiado sustancialmente desde entonces.
Gabe.
1
Cualquier persona interesada en la historicidad de esta configuración debería leer esto: lists.busybox.net/pipermail/busybox/2010-December/074114.html
JDS

Respuestas:

73

¿Qué? no /bin/no es un enlace simbólico /usr/binen ningún sistema compatible con FHS. Tenga en cuenta que todavía hay Unices y Linux populares que ignoran esto, por ejemplo, /biny /sbinestán vinculados a /usr/binArch Linux (el razonamiento es que no necesita /binpara el modo de rescate / usuario único, ya que simplemente arrancaría en vivo DISCOS COMPACTOS).

/bin

contiene comandos que pueden ser utilizados tanto por el administrador del sistema como por los usuarios, pero que son necesarios cuando no se montan otros sistemas de archivos (por ejemplo, en modo de usuario único). También puede contener comandos que los scripts usan indirectamente

/usr/bin/

Este es el directorio principal de comandos ejecutables en el sistema.

esencialmente, /bincontiene ejecutables que son requeridos por el sistema para reparaciones de emergencia, arranque y modo de usuario único. /usr/bincontiene los archivos binarios que no son necesarios.

Notaré que pueden estar en discos / particiones separados, /bindeben estar en el mismo disco que /. /usr/binpuede estar en otro disco, aunque tenga en cuenta que esta configuración se ha roto durante un tiempo (es por eso que systemd advierte sobre esta configuración en el arranque).

Para una corrección completa, algunos dispositivos pueden ignorar FHS, ya que creo que es solo un estándar de Linux, no estoy al tanto de que todavía se haya incluido en SUS, Posix o cualquier otro estándar de UNIX, aunque debería ser en mi humilde opinión. Sin embargo, es parte del estándar LSB .

xenoterracida
fuente
Entonces, ¿significa que puedo compartir / usr / bin entre dos distribuciones? como ubuntu 10.04 y 10.10?
balki
44
@balki no, todavía tienen que estar vinculados correctamente, lo que significa que deberían estar usando la versión correcta de las librerías con las que están construidos.
xenoterracide
66
/bines un enlace a /usr/binalgunos dispositivos, como (¿algunas versiones de?) Solaris.
Gilles
1
@balki podría compartir /usrentre dos distribuciones muy similares, aunque no lo probaría a menos que sepa lo que está haciendo, y esté preparado para que el experimento falle de una manera que haga que la computadora no arranque o coma tu información. También tenga en cuenta que muchas de las grandes diferencias entre las 10.04 y 10.10 estará en/usr
xenoterracide
2
Incluyamos también que / usr / local / bin es donde se instalan los programas que no están incluidos en su distribución pero que están destinados para uso en todo el sistema.
Donato
56

/sbin - Binarios necesarios para el arranque, reparación del sistema de bajo nivel o mantenimiento (nivel de ejecución 1 o S)

/bin - Binarios necesarios para el funcionamiento normal / estándar del sistema en cualquier nivel de ejecución.

/usr/bin - Binarios de aplicación / distribución a los que deben acceder usuarios registrados localmente

/usr/sbin - Binarios de aplicación / distribución que admiten o configuran cosas en / sbin.

/usr/share/bin - Binarios o scripts de aplicación / distribución destinados a ser accedidos a través de la web, es decir, aplicaciones web Apache

*local*- Binarios que no forman parte de una distribución; compilado localmente o instalado manualmente. Usualmente nunca hay un /local/binpero siempre un /usr/local/biny /usr/local/share/bin.

LawrenceC
fuente
44
Ah, y puede colocar todo esto en un disco o partición por separado si lo desea, por seguridad o lo que sea. La idea es que puede desmontar / usar y el sistema tendrá todo lo que necesita para un funcionamiento básico, pero no puede ejecutar ninguna aplicación que no sea del sistema.
LawrenceC
1
Desearía haberlo sabido hace años. La mejor explicación que he visto hasta ahora. No puedo decir que haya buscado mucho, pero me alegra saber finalmente la respuesta.
David
2
Esta es una respuesta genial. te podría donar 10 de mis propios puntos si pudiera
anfibio
@ultrasawblade se /usr/bindesmonta automáticamente cuando no hay usuarios conectados? Por ejemplo, cuando LINUX arranca y presenta la autenticación de inicio de sesión, ¿está /usr/binmontado o no?
1
No, está montado en el arranque y permanece montado a menos que lo desmontes, a menos que tu sistema esté configurado de forma inusual.
LawrenceC
17

Algún tipo de "actualización" sobre este tema:

Recientemente, algunas distribuciones de Linux se están fusionando /binen /usr/biny en relación /liba /usr/lib. A veces también (/usr)/sbina /usr/bin(Arch Linux). Por /usrlo tanto, se espera que esté disponible al mismo tiempo que /.

La distinción entre las dos jerarquías se toma ahora como una complejidad innecesaria. La idea era tener una vez /bindisponible solo en el arranque, pero tener un disco RAM inicial lo hace obsoleto.

Sé que Fedora Linux (2011) y Arch Linux (2012) van de esta manera y Solaris lo hace durante mucho tiempo (> 15 años).

JonnyJD
fuente
8

En Linux /biny /usr/bintodavía están separados porque es común tenerlos /usren una partición separada (aunque esta configuración se rompe de manera sutil, a veces). En /binestá todos los comandos que necesitará si solo ha /montado.

En Solaris y Arch Linux (y probablemente otros) /bines un enlace simbólico a /usr/bin. Arch también tiene /sbiny /usr/sbinun enlace simbólico a /usr/bin.

De particular interés, la afirmación que /bines para los comandos de "administrador del sistema" y /usr/bines para los comandos de usuario no es cierta (a menos que piense eso bashy lssea ​​solo para administradores, en cuyo caso tiene mucho que aprender). Los comandos de administrador están en /sbiny /usr/sbin.

bahamat
fuente
1
¿Quién dijo que bines solo para administradores de sistemas? para eso sbinestá.
xenoterracide
Te cité mal. Lo siento, estaba leyendo demasiado rápido.
bahamat
5

Hay muchos sistemas basados ​​en UNIX. Linux, AIX, Solaris, BSD, etc. La cita original ofrece un contexto histórico que se aplica a todos los sabores. Si observa cualquier sistema específico, verá resultados diferentes. La última oración de la cita original es específica solo para algunas versiones y distribuciones.

Chris Quenelle
fuente