Warum gibt es in Linux so viele Orte, an denen man eine Binärdatei ablegen kann? Es gibt mindestens diese fünf:
/bin/
/sbin/
/usr/bin/
/usr/local/bin/
/usr/local/sbin/
Und auf meiner Office-Box habe ich für einige von ihnen keine Schreibberechtigung.
Welche Art von Binärdatei wird in welche dieser bin
s geschrieben?
filesystems
binary
Laser
quelle
quelle
/usr/sbin/
.~/bin/
für persönliche Sachen./bin
mit/usr/bin
und/sbin
mit zusammengeführt wurden/usr/sbin
- siehe Der Fall für die / usr-Zusammenführung ./usr/local/bin
?Antworten:
/bin
(und/sbin
) waren für Programme gedacht, die sich auf einer kleinen/
Partition befinden mussten, bevor die größeren/usr
usw. Partitionen gemountet wurden. Heutzutage dient es hauptsächlich als Standardspeicherort für wichtige Programme/bin/sh
, obwohl die ursprüngliche Absicht beispielsweise für Installationen auf kleinen eingebetteten Geräten immer noch relevant sein kann./sbin
Im/bin
Gegensatz dazu wird es für Systemverwaltungsprogramme (die normalerweise nicht von normalen Benutzern verwendet werden) benötigt, bevor sie/usr
bereitgestellt werden./usr/bin
ist für verteilungsverwaltete normale Benutzerprogramme.Es gibt eine
/usr/sbin
Beziehung mit der gleichen/usr/bin
wie/sbin
muss/bin
./usr/local/bin
ist für normale Benutzerprogramme gedacht, die nicht vom Distributionspaket-Manager verwaltet werden, z. B. lokal kompilierte Pakete. Sie sollten sie nicht installieren,/usr/bin
da zukünftige Distributions-Upgrades sie möglicherweise ohne Vorwarnung ändern oder löschen./usr/local/sbin
, wie Sie wahrscheinlich an dieser Stelle erraten können, ist zu/usr/local/bin
wie/usr/sbin
zu/usr/bin
.Darüber hinaus gibt es auch
/opt
welche für monolithische Nicht-Distributions-Pakete, obwohl vor deren ordnungsgemäßer Integration verschiedene Distributionen Gnome und KDE dort ablegen. Im Allgemeinen sollten Sie es für große, schlecht gestaltete Pakete von Drittanbietern wie Oracle reservieren.quelle
~/bin
und füge dieses Verzeichnis als Benutzer zu deinem PFAD hinzu ... Danke für den Hinweis, ich habe meinen stark veralteten Kommentar gelöscht.PATH
, undecho $PATH
für mich/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
bedeutet dies, dass ausführbare Dateien/usr/local/bin
Vorrang vor den Dateien haben , in/usr/bin
denen Vorrang vor den Dateien in vorhanden ist/bin
.Ich empfehle einen Blick auf die Manpage zur Dateisystemhierarchie:
Was auch online verfügbar ist, zum Beispiel: http://linux.die.net/man/7/hier
quelle
Der Standardeintrag für die Dateisystemhierarchie in Wikipedia hat mir geholfen, die gleiche Frage zu beantworten, als ich sie hatte. Außerdem enthält er eine sehr erklärende Tabelle.
Auszug aus dieser Seite 1 :
1 Abgerufen am 19. Juni 2019; Permalink .
quelle
Das
sbin
Verzeichnis enthält Programme, die in der Regel nur der Systemadministration dienen. Programme für normale Benutzer sollten nie in sie gehen.Einige Programme werden während des Startvorgangs benötigt und enden in
/bin/
oder/sbin/
. Diese müssen verfügbar sein, bevor Dateisysteme eingehängt werden. Dinge wiemount
undfsck
die zum Überprüfen und Mounten von Dateisystemen benötigt werden, müssen vorhanden sein.Die meisten Pakete landen in
/usr/bin/
und/usr/sbin/
. Diese befinden sich möglicherweise in einem anderen Dateisystem als dem Root-Dateisystem. In einigen Fällen befinden sie sich möglicherweise auf einem Netzwerklaufwerk.Lokale Programme und Skripte gehören in
/usr/local/bin/
und/usr/local/sbin/
. Dies kennzeichnet sie eindeutig als nicht standardisiert und möglicherweise nur vor Ort verfügbar.Führen Sie zur weiteren Erläuterung den Befehl aus,
man hier
der eine Beschreibung der empfohlenen Dateisystemhierarchie für Ihre Distribution enthalten sollte. Vielleicht möchten Sie auch etwas über die Dateisystemhierarchie auf Wikipedia lesenquelle
In den 1970er Jahren
UNIX
befanden sich alle offiziellen ausführbaren Dateien in/bin
und/usr/bin
befanden sich unter den Benutzerverzeichnissen (z. B./usr/dmr
), in denen jeder Benutzer eigene Binärdateien speichern konnte, die möglicherweise auch für andere von Interesse waren.Das Ergebnis dieser Öffnung
/usr/bin
war ein Schrottplatz von undokumentierter Software, und so wurdeStephen Bourne
eine geschriebencron script
, die jede Nacht nach neuen Binärdateien suchte und alle Binärdateien entfernte, die keine Dokumentation hatten oder die aktualisiert wurden, ohne ihre Dokumentation ebenfalls zu aktualisieren.In den späten 1970er Jahren
/usr/bin
wurde in die OS-Basisdistribution integriert und mit der Nutzung/usr/local/bin
für den Zweck des vorherigen Open begonnen/usr/bin
.Nach einer Weile wurde in sysadmins Software
/usr/local/bin
gespeichertnon-local
, die aus dem Netzwerk importiert wurde (z. B. USENET), und da UNIX-Unternehmen nicht den gleichen Fehler wie mit wiederholen wollten/usr/bin
, fand um 1987 eine Konferenz zur Dateisystemhierarchie statt, auf der sich alle UNIX-Unternehmen einigten aufgeben/usr/local/bin
und/opt/<vendor>/bin
stattdessen benutzen .Leider ist Linux Distributionen dieser Entscheidung nicht gefolgt ....
quelle
/opt
nicht mit UNIX, sondern mit Linux befasste. Dies ist wie die Antwort "Warum haben Autos 4 Räder?" mit "Fahrräder haben 2! Autos leider nicht." was dem OP nicht hilft zu verstehen, warum Autos 4.