Mac OS X: herkömmliche Orte, an denen Binärdateien gespeichert werden sollen

47452
Jason S

Ich habe eine Anwendung heruntergeladen, die eine Befehlszeilenanwendung ist, und möchte sie an einem Ort ablegen, an dem ich sie von der Befehlszeile aus ausführen kann, ohne den Pfad explizit eingeben zu müssen.

  1. Was sind die konventionellen Pfade für so etwas? /usr/bin? Gibt es verschiedene Optionen, eine, wenn ich es für alle Benutzer möchte, und eine, wenn ich es nur für einen bestimmten Benutzer, wie mein Administratorkonto, möchte?

  2. Oder sollte ich es in einem eigenen Verzeichnis unter dem Verzeichnis "Applications" ablegen und es dem Pfad hinzufügen? Wenn ja, welche Datei steuert, wo der Pfad festgelegt ist?

47

3 Antworten auf die Frage

38
Telemachus

Kernantwort: Sie wollen wahrscheinlich /usr/local/bin. Abhängig davon, wie aktuell Ihr macOS ist, müssen Sie möglicherweise Ihre Standardeinstellung aktualisieren $PATH. Weitere Details finden Sie unten.

UPDATE 01.12.2010 Irgendwann, seit ich meine ursprüngliche Antwort geschrieben habe, hat Apple die Standardeinstellung geändert $PATH. Daher ist vieles, was ich weiter unten sage, für die letzten Macs irrelevant. Wenn Sie echo $PATHein Terminal eingeben und /usr/local/binals erstes angegeben sind, können Sie alles Weitere über das Ändern Ihres Terminals ignorieren $PATH.

Ursprüngliche Antwort

Macs sind in dieser Hinsicht ungewöhnlich. Die Standardvariable $PATHfür einen normalen Benutzer sieht folgendermaßen aus:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin 

Durch das Setzen /usr/local/bin nach /usr/bin und /binstellt Mac das übliche System auf den neuesten Stand. Normalerweise können Sie etwas einfügen /usr/local/bin(sagen wir einen zweiten Perl-Interpreter, der auf eine nicht standardisierte Weise kompiliert wurde), und ein normaler Benutzer wird zuerst den benutzerdefinierten und nicht den systemweiten schlagen. Das ist gut. Benutzer können Varianten erhalten, aber das System bleibt rein. Unter der Vorgabe von Apple $PATHwerden jedoch Elemente in /usr/binoder /binvor allen Elementen gefunden /usr/local/bin. (Dies verhindert im Grunde den Zweck der Installation, z. B. des benutzerdefinierten Perl in /usr/local/bin.)

Um dies zu beheben, können Sie den normalen Benutzer ändern, $PATHindem Sie die .profileDatei im Basisverzeichnis des Benutzers bearbeiten . (Diese Datei ist möglicherweise nicht vorhanden, wenn Sie eine brandneue Installation haben. Erstellen Sie sie in diesem Fall.)

Teilnahmslos: Homebrew bietet eine hervorragende Paketverwaltung für Macs. Standardmäßig installiert Homebrew Software in /usr/localeiner Weise, die es jedoch sehr einfach macht, Dinge zu entfernen und später in einen Vanilla-Zustand zurückzukehren.

Bei meinem neu installierten OsX 10.13.6 (High Sierra) enthält der Pfad standardmäßig / usr / local / bin (obwohl der Ordner überhaupt nicht vorhanden ist). Legolas vor 5 Jahren 1
@Legolas Apple scheint sich geändert zu haben. Ich werde den Beitrag bearbeiten. Telemachus vor 5 Jahren 0
9
avstrallen

/usr/local/binund /usr/local/sbines lohnt sich, Ihren Pfad hinzuzufügen, da viele Makefiles für Quell-Builds standardmäßig dort installiert werden.

Wenn Sie MacPorts, es lohnt Zugabe /opt/local/binund /opt/local/sbinals gut.

Am besten fügen Sie dies hinzu

export PATH=/usr/local/bin:/usr/local/sbin:/opt/local/bin:/opt/local/sbin:$PATH

in die .bashrcDatei in Ihrem Home-Verzeichnis (die ausgeblendet ist, daher ist die CLI der beste Weg, dies zu tun) oder, wenn Sie den systemweiten Pfad ändern möchten, fügen Sie dieselbe Zeile /etc/bashrc(nicht ausgeblendet) hinzu, aber Sie werden es tun müssen sudodas tun.

Wenn Sie .bashrcbei keinem Benutzer zu Hause ein Kennwort haben, können Sie ein Feld erstellen und diese Zeile hinzufügen. Denken Sie jedoch daran, die Berechtigungen für die von Ihnen erstellte Datei so zu ändern, dass sie für den betreffenden Benutzer lesbar ist (offensichtlich nicht relevant, wenn Sie tun Sie es für Ihr eigenes Profil).

Am $PATHEnde hängt der Standardpfad des Systems an das, was Sie zuvor eingegeben haben. Beachten Sie, dass das System in der Reihenfolge der angegebenen Pfade nach Binärdateien sucht. Wenn Sie also eine Binärdatei installieren /usr/localoder /opt/localdiese standardmäßig auf dem System installiert ist, werden zuerst die Versionen gefunden, die Sie installieren. Dies kann (wenn auch selten) zu Problemen führen. Es lohnt sich, darauf zu achten.

Gute Informationen gibt es hier .

Ich sollte beachten, dass die oben genannten Voraussetzungen davon ausgehen, dass Sie Bash für die Shell verwenden. Dies ist der Standard bei Mac OS X 10.4 (Tiger) und Mac OS X 10.5 (Leopard), nicht jedoch bei früheren Systemen, die tcshstattdessen verwendet wurden. was eine andere Syntax hat.

Ich hoffe das hilft...

`/ usr / local / bin` ist bereits in einem Standard-OS X` $ PATH` (obwohl zu spät - siehe meine Antwort). Wenn Sie MacPorts verwenden, sollte das Installationsprogramm Ihren Pfad nach Bedarf ändern. Dies hat zumindest meine Erfahrung gemacht. Das heißt, es ist gut für die Benutzer, zu wissen, was es tut (und warum). Telemachus vor 14 Jahren 1
@Telemachus: Wenn ich einen Mac für mich selbst baue, passe ich die Hölle als erstes an, sodass ich mich nie daran erinnern kann, was Standard und was mir gehört. avstrallen vor 14 Jahren 0
Ich weiß, was Sie über den MacPorts-Installer unternehmen, der die Pfade in .profile anpasst, aber ich hatte in der Vergangenheit eine Gelegenheit, als ich aus irgendeinem Grund nicht wusste, was dies ausblieb (was die Hölle aus mir heraus verwirrte) eine ganze Weile!) ... seitdem tendiere ich dazu, es von Hand einzuschleifen ... avstrallen vor 14 Jahren 1
"was verborgen ist, daher ist die CLI der beste Weg, dies zu tun": dumme Frage, wie kann TextEdit für eine Datei von der Eingabeaufforderung aus ausgeführt werden? Jason S vor 14 Jahren 0
Keine dumme Frage: Verwenden Sie den Befehl "open" mit dem Dateinamen als Argument, und es sollte mit dem geöffnet werden, was als Standard-Texteditor festgelegt ist (TextEdit als Standard). avstrallen vor 14 Jahren 0
@Adamvs: Sie haben zu Recht erwähnt, was MacPorts in $ PATH benötigt, da das Installationsprogramm möglicherweise fehlschlägt (oder das Profil später möglicherweise beschädigt wird). Ich erwähnte nur, dass der Installer _Should_ die erforderlichen Informationen zum Pfad hinzufügt. Wie ich mich erinnere, gibt es jetzt sogar einen Dialog mit der Frage "Wollen Sie, dass ich Ihr Profil so bearbeite, dass es bla ist." Aber ich denke da vielleicht an Fink. Telemachus vor 14 Jahren 0
Um dies zu verdeutlichen: Öffnen Sie ~ / .bashrc auf der CLI und öffnen Sie die Datei, falls vorhanden, oder erstellen Sie sie, falls dies nicht der Fall ist. Um die systemweite Konfiguration zu bearbeiten, öffnen Sie sudo open / etc / bashrc und geben Sie das Passwort ein. Ich hoffe, Sie bekommen es sortiert ... avstrallen vor 14 Jahren 0
Wenn dies nicht der Fall ist, wird die Datei nicht erstellt. Wenn Sie sie erstellen möchten, berühren Sie ~ / .bashrc, um die Datei zuerst zu erstellen. avstrallen vor 14 Jahren 0
@ Telemachus - das war das Seltsame an meinem MacPorts-Installationsproblem - es hat die .profile-Datei gut angepasst, aber das System hat es nicht erkannt. Deshalb habe ich so lange gebraucht, um das Problem zu überwinden: Der MacPorts-Installer hat anscheinend richtig funktioniert, so wie ich es jedes Mal für mich hatte. Es ist mir immer noch ein Rätsel ..! Wenn jemand weiß, warum das passiert ist, würde ich gerne davon erfahren. avstrallen vor 14 Jahren 0
7
John Topley

Ich neige dazu mit zu gehen /usr/local. Hier ist eine nette Erklärung warum, was sich auf Filesystem Hierarchy Standard (FHS) bezieht Wende sagt über /usr/local:

Tertiärhierarchie für lokale Daten, spezifisch für diesen Host. Hat normalerweise weitere Unterverzeichnisse, z. B. bin, lib, share.⁢

Ja, es ist in dieser Hinsicht ziemlich dasselbe wie andere * nix-Betriebssysteme. jtbandes vor 14 Jahren 0
Bitte zitieren Sie die wesentlichen Teile der Antwort aus den Referenzlinks, da die Antwort ungültig werden kann, wenn sich die verlinkten Seiten ändern. DavidPostill vor 7 Jahren 0