Bis heute habe ich das Terminal nur in begrenztem Umfang zum Ein- und Aussteigen aus Verzeichnissen und zum Ändern der Dateidaten mit dem touch
Befehl verwendet. Ich hatte den vollen Umfang des Terminals erkannt, nachdem ich ein unterhaltsames Skript auf dem Mac installiert und chmod 755
die Datei benötigt hatte, um sie anschließend ausführbar zu machen.
Ich würde aber gerne wissen, was /usr/local/bin
ist. /usr/
Ich nehme an, ist der Benutzer des Computers. Ich bin mir allerdings nicht sicher, warum /local/
es so ist. Es steht natürlich für den lokalen Computer, aber da es sich auf dem Computer (oder einem Server) befindet, wäre es wirklich notwendig? Wäre nicht /usr/bin
gut?
Und was ist /bin
? Warum wird dieser Bereich normalerweise zum Installieren von Skripten auf dem Terminal verwendet?
Schließen.
Unix begann als Mehrbenutzer-Betriebssystem, es ist also nicht "der Benutzer", sondern "der Benutzer " im Plural.
Vor der Veröffentlichung von AT & T Unix System V Release 4 (SVR4) im Jahr 1988 mit seinen Benutzerverwaltungstools, in denen standardmäßig Benutzerverzeichnisse erstellt wurden
/home
, war der herkömmliche Speicherort/usr
.¹$HOME
Möglicherweise befand sich Ihr Verzeichnis/usr/jfw
auf einer System III- Box./usr
auch enthalten ist , damals wie heute/usr/bin
,/usr/lib
usw. Die Erfahrung hat gezeigt , dass die Home - Verzeichnisse war gut System - Management - Praxis Absonderungs, so mit der/home
Änderung der Politik in SVR4, es hinter sich gelassen alles denken wir jetzt , wie in angehören/usr
./usr
Es gab immer noch einen guten Grund, an dem Namen festzuhalten: Zurück blieben Dateien, die erst verfügbar sein mussten, wenn das System weit genug hochgefahren wurde, um die normale interaktive Nutzung zu unterstützen. Das heißt, was zurückblieb, waren die benutzerorientierten Teile des Betriebssystems. Dies bedeutete, dass es/usr
sich um ein anderes physisches Volume handeln könnte, was zu Zeiten von 92-MB-Festplattenlaufwerken in der Größe von Waschmaschinen eine gute Sache war .Frühe Unix-Systeme haben darauf geachtet, dass die Kernbetriebssystemdateien nicht vorhanden sind,
/usr
damit Sie immer noch in den Einzelbenutzermodus² booten können, auch wenn das/usr
Volume aus irgendeinem Grund nicht bereitgestellt werden konnte. Das Root-Volume enthielt genügend Tools, um das/usr
Volume wieder online zu stellen.Mehrere Unix - Varianten außer Acht lassen nun dieses alte Prinzip Design , da selbst kleine eingebettete Systeme für genügend Platz sowohl für die traditionellen Root - Volume - Dateien und alle
/usr
auf einem einzigen volume.³ Red Hat Enterprise Linux, Solaris und Cygwin Symlink/bin
auf/usr/bin
und/lib
zu ,/usr/lib
so dass es keine länger keinen Unterschied zwischen diesen Verzeichnissen.Ja. Es bezieht sich auf die Tatsache, dass Dateien unter
/usr/local
für dieses einzelne System spezifisch sein sollen. Dateien, die in irgendeiner Weise generisch sind, sollten woanders abgelegt werden.Dies hat auch Wurzeln in der Art und Weise, wie Unix-Systeme vor Jahrzehnten verwendet wurden, als dies alles standardisiert wurde. Wiederum waren Festplatten der damaligen Zeit sperrig, sehr teuer und nach heutigen Maßstäben wenig gelagert. Um Geld und Platz auf den Festplatten zu sparen, wurde in einem Computerraum mit Unix-Boxen häufig der größte Teil von
/usr
NFS oder einem anderen Netzwerk-File-Sharing-Protokoll gemeinsam genutzt, sodass nicht für jede Box eine eigene redundante Kopie erforderlich war box würde untergehen/usr/local
, das wäre ein separates volumen von/usr
.Dieses historische Erbe ist der Grund, warum die meisten Unix-Programme von Drittanbietern standardmäßig
/usr/local
von Hand installiert werden. Mit den meisten derartigen Softwareprogrammen können Sie das Paket an einem anderen Ort installieren. Wenn Sie jedoch keine Auswahl treffen, erhalten Sie die sichere Standardeinstellung, die andere häufig verwendete Installationsorte für bestimmte Zwecke nicht beeinträchtigt.Es gibt gute Gründe, die Software an einem anderen Ort installieren zu lassen. Das macOS-Team von Apple tut dies, wenn es beispielsweise
bash
aus dem GNU Bash-Quellcode erstellt . Sie werden/
als Installationspräfix verwendet und überschreiben das/usr/local
Standardpräfix, sodass Bash in landet/bin
.Ein weiteres Beispiel ist die Art und Weise, in der ältere Linux-Systeme ihre GUI-Software
/usr/X11R6
von der herkömmlichen Befehlszeile undcurses
-basierter Software getrennt haben. Dies wurde einfach durch Überschreiben des Standardpräfixes/usr/local
mit/usr/X11R6
.⁵ erreichtEs ist die Abkürzung für "binär" und bedeutet in diesem Zusammenhang "eine Datei, die kein reiner Text ist". Die meisten dieser Dateien sind auf einer Unix-Box ausführbar , so dass diese beiden Begriffe in manchen Kreisen synonym sind. ("Bitte baue mir eine Binärdatei für RHEL 7, Fred.")
Text - Dateien auf einer Unix - Box anderswo leben:
/etc
,/usr/include
,/usr/share
etc.Es war einmal so, dass selbst Shell-Skripte - das sind reine Textdateien - aus
bin
Verzeichnissen herausgehalten wurden, aber auch diese Zeile ist verschwommen. Heutzutagebin
enthalten Verzeichnisse normalerweise jede Art von ausführbarer Datei, ob rein "binär" oder nichtFußnoten und Exkursionen :
Der primitive Charakter der Benutzerverwaltungstools vor SVR4 bedeutete, dass das
HOME=/usr/$NAME
Schema lediglich als Konvention dokumentiert und nicht standardmäßig von Softwaretools erzwungen wurde.Sie finden dies auf Seite 4-8 des " AT & T Unix System V Release 3.2-Systemverwalterhandbuchs" : Hier sieht man, wie AT & T das alte
/usr/$NAME
Schema in der letzten Hauptversion von Unix vor dem Erscheinen von SVR4 empfiehlt .In älteren Unix-Systemen war es üblich, dass die Systemadministratoren ein anderes Schema auswählten, das für sie sinnvoller war. Menschen, die Menschen sind, das bedeutete, dass viele verschiedene Schemata erfunden wurden.
Ein Schema, auf das ich stieß,
/home/$NAME
wurde zum Standard/u/$NAME
.Ein anderes System habe ich in den frühen 1990er Jahren hatte so viele Nutzer , dass sie nicht alle Home - Verzeichnisse auf einem einzigen physischen Volumen passen könnte, so verwendet sie ein System wie
/u1/$NAME
,/u2/$NAME
und so weiter, wie ich mich erinnere. Auf welcher Festplatte sich Ihr Home-Verzeichnis befand, war einfach eine Frage des Speicherplatzes, der sich zum Zeitpunkt der Erstellung Ihres Kontos darauf befand.Sie können eine macOS-Box im Einzelbenutzermodus booten, indem Sie sie beim Booten gedrückt halten Cmd-S. Lassen Sie los, sobald der Bildschirm schwarz wird und Sie hellgrauen Text sehen. Es ist, als würde man unter dem Terminal laufen, aber es nimmt den gesamten Bildschirm ein, da die GUI noch nicht gestartet wurde.
Sei vorsichtig, du rennst als
root
.Geben Sie an der Single-User-Root-Eingabeaufforderung "exit" ein, um den Single-User-Modus zu verlassen und mit dem Booten im Multi-User-GUI-Modus fortzufahren.
Unixy OSes , die noch erscheinen kritische Einbenutzermodus Dateien aus halten zu
/usr
dürfen, in der Tat zu tun in diesen Tagen so. Ich habe einmal eine FreeBSD 9-Box durch Verschieben/usr
auf ein ZFS-Volume nicht mehr bootfähig gemacht . Ich habe vergessen, dass die ZFS-on-Root-Funktionen erst mit FreeBSD 10 gelandet sind und einen Catch 22 erstellt haben : Das Betriebssystem benötigte Dateien,/usr
um zu mounten/usr
!Das war schon schlimm genug, aber wenn FreeBSD 9 immer noch seine Single-User-Boot-Sachen raushielt
/usr
, hätte ich das Problem beheben können. Da es nicht einmal im Einzelbenutzermodus booten würde, wenn es nicht/usr
einbindbar wäre, wurde diese Tradition offensichtlich irgendwie verletzt. Ich musste von einer Rettungs-CD booten, um das System wieder hochzufahren.Hier bekommen wir auch
/usr/share
: Es trennt Dateien, die sogar von Unix-Boxen mit verschiedenen Prozessortypen gemeinsam genutzt werden können. In der Regel Textdateien: Manpages, das Wörterbuch usw."X11R6" bezog sich auf die Version des X Window-Systems, die Linux-GUIs zu der Zeit untermauerte, als diese Konvention vorherrschte. Linux-Systeme hörten im Allgemeinen auf, die GUI-Software zu trennen, als X11R6 durch X.Org ersetzt wurde .
Die ursprünglichen Unix-Systeme behielten ihre Kern-Shell-Skripte bei,
/etc
um zu vermeiden, dass sie mit den echten Binärdateien in verwechselt werden/bin
.quelle
Ich würde empfehlen, bei Fragen zur Struktur allgemein auf Wikipedia zurückzugreifen. Dort werden die Grundlagen behandelt.
Um Ihre Frage jedoch direkt zu beantworten:
Aus diesem Grund tendieren Sie dazu, eine ähnliche Struktur zwischen den beiden zu finden. / usr / {, local /} {bin, sbin, lib}. Da die Shell neu ist, handelt es sich bei dem Bit mit den {} 's um eine Shell-Erweiterung. Versuchen Sie die Ausführung
von Ihrer lokalen Shell, um zu sehen, wie es funktioniert.
quelle
/usr/local/bin
zeigt die UNIX-ähnlichen Wurzeln des neuesten Mac OS (dessen BSD darunter basiert).Dies hat sich seit den frühen Implementierungen von UNIX auf Linux und BSD geändert, aber die Konvention ist geblieben. Nun,
/usr/bin
wäre für "Haupt" oder Kernprogramme und Bibliotheken, wo/usr/local/bin
für Add-On und unkritische Programme und Bibliotheken wäre.quelle
/usr/nzwulfin
standardmäßig. Ein weiteres gängiges Schema. bevor das SVR4-/home
Schema übernahm, war/u
. Ein System, das ich früher verwendet habe, hatte so viele Benutzer, dass sie mehrere physische Festplatten für die Speicherung von Benutzerdateien benötigten, also hatten sie Dinge wie/u/d5/tangent
./usr/local/bin
ist der beliebteste Standardspeicherort für ausführbare Dateien, insbesondere für Open Source-Dateien.Dies ist jedoch wahrscheinlich eine schlechte Wahl, da es auf Unix-Systemen
/usr
Anfang der neunziger Jahre standardisiert wurde, um eine Hierarchie von Dateien zu enthalten, die zum Betriebssystem gehören und daher von mehreren Systemen unter Verwendung dieses Betriebssystems gemeinsam genutzt werden können.Da diese Dateien statisch sind, kann das
/usr
Dateisystem schreibgeschützt bereitgestellt werden./usr/local
besiegt diesen Standard, da er vom Design her lokal ist und daher nicht gemeinsam genutzt wird. Er muss daher Lese- und Schreibzugriff haben, um eine lokale Kompilierung zu ermöglichen, und ist nicht Teil des Betriebssystems. Schade, dass/opt/local
nicht stattdessen so etwas gewählt wurde ...quelle
Ich empfehle die Verwendung
/usr/local
für kommerzielle Programme, die Sie möglicherweise installieren, z. B. Mathematica. Platzieren Sie es beim Einrichten in einer eigenen Partition. Wenn Sie Ihr Betriebssystem aktualisieren, wird diese Partition nicht gestört und Sie müssen den Inhalt nicht erneut installieren. Verwenden Sie es also für Dinge, die Sie zwischen Betriebssystem-Upgrades aufbewahren möchten.Stellen Sie auch
/home
aus diesem Grund sicher, dass Sie eine eigene Partition angeben.quelle
Diese Antwort könnte ebenfalls hilfreich sein.
/ usr / local
Die ursprüngliche Idee dahinter
/usr/local
war, auf jeder Maschine ein separates ('lokales') '/ usr'-Verzeichnis zu haben/usr
, das möglicherweise nur von einer anderen Stelle aus schreibgeschützt eingehängt werden kann. Es kopiert die Struktur von/usr
.Heutzutage wird
/usr/local
es allgemein als ein guter Ort angesehen, um selbst kompilierte Programme oder Programme von Drittanbietern aufzubewahren. Die/usr/local
Hierarchie wird vom Systemadministrator bei der lokalen Installation der Software verwendet. Es muss sicher sein, dass es beim Aktualisieren der Systemsoftware nicht überschrieben wird.Es kann für Programme und Daten verwendet werden, die von einer Gruppe von Hosts gemeinsam genutzt, jedoch nicht in gefunden werden
/usr
. Lokal installierte Software muss innerhalb platziert werden ,/usr/local
als vielmehr ,/usr
wenn es installiert wird, ersetzen oder aktualisieren Software/usr
.quelle