Unterschied zwischen / bin und / usr / bin

83

Ich habe das auf dieser Website nachgelesen und es macht keinen Sinn.

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

Als UNIX zum ersten Mal geschrieben wurde /binund sich /usr/binphysisch auf zwei verschiedenen Datenträgern befand: /binauf einem kleineren, schnelleren (teureren) Datenträger und /usr/binauf einem größeren, langsameren Datenträger. Nun /binist ein symbolischer Link zu /usr/bin: Sie sind im Wesentlichen das gleiche Verzeichnis.

Aber wenn Sie lsden /binOrdner, hat es viel weniger Inhalt als der /usr/binOrdner (zumindest auf meinem laufenden System).

Kann jemand bitte den Unterschied erklären?

Wer bin ich
quelle
Sprechen diese Leute nicht über eine bestimmte Maschine?
Tshepang
1
@tshepang Nun, wenn Sie weiter klicken, gelangen Sie im Artikel zur grundlegenden Einführung in UNIX / Linux . Also würde ich nein sagen, sie sprechen nicht über eine bestimmte Maschine
Xenoterracide
3
@xeno Ja, ich habe es getan, bin aber nicht lange genug dabei geblieben. In diesem Fall muss diese Seite entfernt werden. So irreführend.
Tshepang
3
Dieses Dokument kann als "historischer Bezug" angesehen werden. Wenn Sie sich die Seite "Über dieses Dokument" ansehen, werden Sie sehen, dass es ursprünglich 1993 urheberrechtlich geschützt war. Wenn Sie sich die Bibliographie ansehen, ist es die neueste Quelle von 1997. Die meisten der populären unixartigen Betriebssysteme haben sich seitdem erheblich verändert dann.
gabe.
1
Wer sich für die Historizität dieser Konfiguration interessiert, sollte dies lesen: lists.busybox.net/pipermail/busybox/2010-December/074114.html
JDS

Antworten:

73

Was? no /bin/ist kein Symlink zu /usr/bineinem FHS-kompatiblen System. Beachten Sie, dass es nach wie vor beliebt Unices und Linux - Versionen sind , die dies ignorieren - zum Beispiel, /binund /sbinsind symbolische Links zu /usr/binauf Arch Linux (die Begründung ist , dass Sie nicht brauchen /binfür die Rettung / Single-User-Modus, da Sie nur eine Live - booten würde CD).

/bin

Enthält Befehle, die sowohl vom Systemadministrator als auch von Benutzern verwendet werden können, jedoch erforderlich sind, wenn keine anderen Dateisysteme eingehängt sind (z. B. im Einzelbenutzermodus). Es kann auch Befehle enthalten, die indirekt von Skripten verwendet werden

/usr/bin/

Dies ist das primäre Verzeichnis der ausführbaren Befehle auf dem System.

/binEnthält im Wesentlichen ausführbare Dateien, die vom System für Notfallreparaturen, das Booten und den Einzelbenutzermodus benötigt werden. /usr/binEnthält alle Binärdateien, die nicht benötigt werden.

Ich werde bemerken, dass sie sich auf separaten Festplatten / Partitionen befinden können, /binmüssen sich auf derselben Festplatte befinden wie /. /usr/binkann sich auf einer anderen Festplatte befinden - obwohl zu beachten ist, dass diese Konfiguration seit einiger Zeit nicht mehr funktioniert (aus diesem Grund warnt zB systemd beim Booten vor dieser Konfiguration).

Aus Gründen der vollen Korrektheit ignorieren einige Unices möglicherweise FHS, da es meiner Meinung nach nur ein Linux-Standard ist. Mir ist nicht bekannt, dass es bereits in SUS, Posix oder einem anderen UNIX-Standard enthalten ist, obwohl es IMHO sein sollte. Es ist jedoch Teil des LSB- Standards.

Xenoterracid
quelle
Bedeutet das, dass ich / usr / bin zwischen zwei Distributionen teilen kann? wie Ubuntu 10.04 und 10.10?
Balki
4
@balki nein, sie müssen noch korrekt verlinkt sein, was bedeutet, dass sie die richtige Version der Bibliotheken verwenden müssen, gegen die sie gebaut sind.
Xenoterracide
6
/binist ein Link zu /usr/bineinigen Unices, wie (einigen Releases von?) Solaris.
Gilles
1
@balki Sie könnten der Lage sein , zu teilen /usrzwischen zwei sehr ähnlichen Distributionen, obwohl ich würde es nicht versuchen , wenn Sie wissen , was Sie tun, und Sie bereit sind , für das Experiment in einer Art und Weise zu scheitern , dass der Computer macht nicht booten, oder essen deine Daten. Auch darauf hingewiesen werden , dass viele der großen Unterschiede zwischen 10.04 und 10.10 wird in/usr
xenoterracide
2
Nehmen wir auch an, dass in / usr / local / bin Programme installiert werden, die nicht in Ihrer Distribution enthalten sind, aber für die systemweite Verwendung vorgesehen sind.
Donato
56

/sbin - Binärdateien, die zum Booten, zur Reparatur oder Wartung von Systemen auf niedriger Ebene benötigt werden (Run Level 1 oder S)

/bin - Binärdateien, die für die normale / Standard-Systemfunktion auf jedem Runlevel benötigt werden.

/usr/bin - Binärdateien für Anwendungen / Verteilungen, auf die lokal angemeldete Benutzer zugreifen sollen

/usr/sbin - Programm- / Distributions-Binärdateien, die / sbin unterstützen oder konfigurieren.

/usr/share/bin - Programm- / Distributions-Binärdateien oder Skripte, die über das Web zugänglich sein sollen, dh Apache-Webanwendungen

*local*- Binärdateien, die nicht Teil einer Distribution sind; lokal kompiliert oder manuell installiert. Es gibt normalerweise nie ein, /local/binaber immer ein /usr/local/binund /usr/local/share/bin.

LawrenceC
quelle
4
Oh, und Sie können all dies aus Sicherheitsgründen oder aus sonstigen Gründen auf einer separaten Festplatte oder Partition ablegen. Die Idee ist, dass Sie / usr umounten können und das System über alles verfügt, was es für die Grundfunktionen benötigt, aber keine Nicht-Systemanwendungen ausführen kann.
LawrenceC
1
Ich wünschte, ich hätte es vor Jahren gewusst. Beste Erklärung, die ich bisher gesehen habe. Ich kann nicht sagen, dass ich sehr genau hingeschaut habe, bin aber froh, endlich die Antwort zu wissen.
David
2
Das ist eine großartige Antwort. Ich würde dir 10 meiner eigenen Punkte spenden, wenn ich könnte
amphibient
@ultrasawblade wird /usr/binautomatisch ausgehängt, wenn keine Benutzer angemeldet sind. Zum Beispiel, wenn LINUX bootet und die Login-Authentifizierung präsentiert, ist /usr/bingemountet oder nicht?
1
Nein, es wird beim Booten gemountet und bleibt gemountet, es sei denn, Sie haben Ihr System ungewöhnlich konfiguriert.
LawrenceC
17

Eine Art "Update" zu diesem Thema:

Kürzlich verschmelzen einige Linux - Distributionen /binin /usr/binund in Verbindung stehend /libin /usr/lib. Manchmal auch (/usr)/sbinzu /usr/bin(Arch Linux). Es /usrwird also erwartet, dass es zur gleichen Zeit wie verfügbar ist /.

Die Unterscheidung zwischen den beiden Hierarchien wird jetzt als unnötige Komplexität angesehen. Die Idee war einmal, nur /binbeim Booten verfügbar zu sein, aber eine anfängliche RAM-Disk macht dies obsolet.

Ich weiß, dass Fedora Linux (2011) und Arch Linux (2012) diesen Weg gehen, und Solaris tut dies schon lange (> 15 Jahre).

JonnyJD
quelle
8

Unter Linux /binund /usr/binsind immer noch getrennt, da es üblich ist, /usrauf einer separaten Partition zu arbeiten (obwohl diese Konfiguration manchmal auf subtile Weise unterbrochen wird). In /binsind alle Befehle, die Sie benötigen, wenn Sie nur /gemountet haben.

Unter Solaris und Arch Linux (und wahrscheinlich auch anderen) /bingibt es einen Symlink zu /usr/bin. Arch hat auch /sbinund /usr/sbinsymlinked zu /usr/bin.

Besonders zu beachten ist, dass die Aussage, /bindie für "Systemadministrator" -Befehle und /usr/binfür Benutzerbefehle gilt, nicht wahr ist (es sei denn, Sie glauben das bashund lssind nur für Administratoren, in diesem Fall müssen Sie viel lernen). Administratorbefehle befinden sich in /sbinund /usr/sbin.

Bahamat
quelle
1
wer sagt bindenn nur für systemadministratoren? das ist, was sbinist für.
Xenoterracide
Sie falsch zitiert. Entschuldigung, ich habe zu schnell gelesen.
Bahamat
5

Es gibt viele UNIX-basierte Systeme. Linux, AIX, Solaris, BSD usw. Das Originalzitat gibt einen historischen Kontext an, der für alle Geschmacksrichtungen gilt. Wenn Sie sich ein bestimmtes System ansehen, werden Sie unterschiedliche Ergebnisse sehen. Der letzte Satz des Originalzitats bezieht sich nur auf einige Versionen und Distributionen.

Chris Quenelle
quelle