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