web-dev-qa-db-fra.com

Différence entre / bin et / usr / bin

J'ai lu ceci sur ce site Web et cela n'a aucun sens.

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

Lorsque UNIX a été écrit pour la première fois, /bin et /usr/bin résidait physiquement sur deux disques différents: /bin sur un disque plus petit, plus rapide (plus cher) et /usr/bin sur un disque plus gros et plus lent. Maintenant, /bin est un lien symbolique vers /usr/bin: il s'agit essentiellement du même répertoire.

Mais quand vous ls le /bin dossier, il a beaucoup moins de contenu que le /usr/bin dossier (au moins sur mon système en cours d'exécution).

Alors, quelqu'un peut-il expliquer la différence?

92
whoami

Quelle? non /bin/ n'est pas un lien symbolique vers /usr/bin sur tout système compatible FHS. Notez qu'il existe encore des Unices et Linux populaires qui ignorent cela - par exemple, /bin et /sbin sont liés à /usr/bin sur Arch Linux (le raisonnement étant que vous n'avez pas besoin de /bin pour le mode de secours/mono-utilisateur, car vous venez de démarrer un CD live).

/bin

contient des commandes qui peuvent être utilisées à la fois par l'administrateur système et par les utilisateurs, mais qui sont requises lorsqu'aucun autre système de fichiers n'est monté (par exemple en mode mono-utilisateur). Il peut également contenir des commandes qui sont utilisées indirectement par des scripts

/usr/bin/

Il s'agit du répertoire principal des commandes exécutables sur le système.

essentiellement, /bin contient les exécutables requis par le système pour les réparations d'urgence, le démarrage et le mode mono-utilisateur. /usr/bin contient tous les binaires qui ne sont pas requis.

Je noterai qu'ils peuvent être sur des disques/partitions séparés, /bin doit être sur le même disque que /. /usr/bin peut être sur un autre disque - mais notez que cette configuration a été en quelque sorte interrompue pendant un certain temps (c'est pourquoi par exemple, systemd vous avertit de cette configuration au démarrage).

Pour une exactitude totale, certains unités peuvent ignorer FHS, car je pense qu'il ne s'agit que d'une norme Linux, je ne suis pas au courant qu'elle ait encore été incluse dans SUS, Posix ou toute autre norme UNIX, bien qu'elle devrait être à mon humble avis. Il fait cependant partie de la norme LSB .

79
xenoterracide

Mise à jour: Pour un peu d'histoire et la vraie raison pour laquelle il y a /usr, lisez ceci: http://lists.busybox.net/pipermail/busybox/2010-December/074114.html . Aussi ce .


/sbin - Binaires nécessaires pour le démarrage, la réparation du système de bas niveau ou la maintenance (niveau d'exécution 1 ou S)

/bin - Binaires nécessaires au fonctionnement normal/standard du système à n'importe quel niveau d'exécution.

/usr/bin - Binaires d'application/distribution destinés à être accessibles par des utilisateurs connectés localement

/usr/sbin - Binaires d'application/distribution qui prennent en charge ou configurent des éléments dans/sbin.

/usr/share/bin - Binaires ou scripts d'application/distribution destinés à être accessibles via le Web, c'est-à-dire les applications Web Apache

*local* - Les binaires ne font pas partie d'une distribution; compilé localement ou installé manuellement. Il n'y a généralement jamais de /local/bin mais toujours un /usr/local/bin et /usr/local/share/bin.

59
LawrenceC

Une sorte de "mise à jour" sur ce problème:

Récemment, certaines distributions Linux fusionnent /bin en /usr/bin et en relation /lib en /usr/lib. Parfois aussi (/usr)/sbin à /usr/bin (Arch Linux). Donc /usr devrait être disponible en même temps que /.

La distinction entre les deux hiérarchies est considérée comme une complexité inutile maintenant. L'idée était autrefois d'avoir seulement /bin disponible au démarrage, mais avoir un disque virtuel initial rend cela obsolète.

Je connais Fedora Linux (2011) et Arch Linux (2012) dans cette direction et Solaris le fait depuis longtemps (> 15 ans).

18
JonnyJD

Sous Linux /bin et /usr/bin sont toujours séparés car il est courant d'avoir /usr sur une partition séparée (bien que cette configuration se brise de manière subtile, parfois). Dans /bin est toutes les commandes dont vous aurez besoin si vous n'avez que / monté.

Sous Solaris et Arch Linux (et probablement d'autres) /bin est un lien symbolique vers /usr/bin. Arch a également /sbin et /usr/sbin lien symbolique vers /usr/bin.

Il convient de noter en particulier que [/bin correspond aux commandes "administrateur système" et /usr/bin est pour les commandes utilisateur est pas vrai (sauf si vous pensez que bash et ls sont réservés aux administrateurs, auquel cas vous avez beaucoup à apprendre). Les commandes administrateur sont dans /sbin et /usr/sbin.

8
bahamat

Il existe de nombreux systèmes basés sur UNIX. Linux, AIX, Solaris, BSD, etc. La citation originale donne un contexte historique qui s'applique à toutes les saveurs. Si vous regardez sur un système spécifique, vous verrez des résultats différents. La dernière phrase de la citation d'origine n'est spécifique qu'à certaines versions et distributions.

5
Chris Quenelle