it-swarm.com.de

Mac OS X: Konventionelle Orte, an denen Binärdateien gespeichert werden sollen

Ich habe eine Anwendung heruntergeladen, die eine Befehlszeilenanwendung ist, und möchte sie an einer Stelle platzieren, an der ich sie über die Befehlszeile ausführen kann, ohne den Pfad explizit eingeben zu müssen.

  1. Was sind die herkömmlichen 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 möchte, wie z. B. mein Administratorkonto?

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

55
Jason S

Kernantwort: Sie möchten wahrscheinlich /usr/local/bin. Abhängig davon, wie aktuell Ihr macOS ist, müssen Sie möglicherweise Ihren Standard-$PATH aktualisieren. Siehe unten für weitere Details.

UPDATE 12-01-2018 Irgendwann, seit ich meine ursprüngliche Antwort geschrieben habe, hat Apple seinen Standard $PATH geändert. Aus diesem Grund ist vieles, was ich im Folgenden sage, für neuere Macs irrelevant. Wenn Sie echo $PATH in ein Terminal eingeben und /usr/local/bin zuerst ist, können Sie alles, was Sie unten zum Ändern Ihres $PATH tun, ignorieren.

Ursprüngliche Antwort

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

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

Indem Sie /usr/local/bin nach /usr/bin und /bin setzen, aktualisiert Mac das übliche System. Normalerweise können Sie etwas in /usr/local/bin einfügen (beispielsweise einen zweiten Perl-Interpreter, der auf eine nicht standardmäßige Weise kompiliert wurde), und dann wird ein regulärer Benutzer zuerst den benutzerdefinierten und nicht den systemweiten treffen. Das ist gut. Benutzer können Varianten erhalten, aber das System bleibt rein. In Anbetracht von Apples $PATH werden jedoch Elemente in /usr/bin oder /bin vor den Elementen in /usr/local/bin gefunden. (Dies verhindert im Grunde den Zweck der Installation von beispielsweise dem benutzerdefinierten Perl in /usr/local/bin.)

Um dies zu beheben, können Sie den $PATH des regulären Benutzers ändern, indem Sie die .profile-Datei im Ausgangsverzeichnis des Benutzers bearbeiten. (Diese Datei ist möglicherweise nicht vorhanden, wenn Sie eine brandneue Installation haben. Erstellen Sie sie in diesem Fall.)

Teilweise verwandt: Homebrew bietet eine hervorragende Paketverwaltung für Macs. Standardmäßig installiert Homebrew die Software in /usr/local, dies geschieht jedoch auf eine Weise, die es sehr einfach macht, Dinge zu entfernen und später in einen Vanilla-Status zurückzukehren.

47
Telemachus

Es lohnt sich, /usr/local/bin und /usr/local/sbin zu Ihrem Pfad hinzuzufügen, da viele Makefiles für Quell-Builds standardmäßig dort installiert werden.

Wenn Sie MacPorts verwenden, sollten Sie auch /opt/local/bin und /opt/local/sbin hinzufügen.

Der beste Weg, dies zu tun, ist das Hinzufügen

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

zu der .bashrc-Datei in Ihrem Ausgangsverzeichnis (die ausgeblendet ist, daher ist die CLI die beste Möglichkeit, dies zu tun) oder, wenn Sie den systemweiten Pfad ändern möchten, fügen Sie die gleiche Zeile zu /etc/bashrc hinzu (nicht ausgeblendet), aber Sie müssen dazu Sudo angeben.

Wenn Sie bei keinem Benutzer zu Hause einen .bashrc haben, können Sie einen erstellen und diese Zeile hinzufügen. Denken Sie jedoch daran, die Berechtigungen für die von Ihnen erstellte Datei zu ändern, damit sie für den betreffenden Benutzer lesbar ist (offensichtlich nicht relevant, wenn Sie dies tun) machst es für dein eigenes Profil).

Der $PATH am Ende fügt den Standardpfad des Systems an alles an, was Sie zuvor eingegeben haben. Beachten Sie, dass das System nach Binärdateien in der angegebenen Reihenfolge der Pfade sucht. Wenn Sie also eine Binärdatei in /usr/local oder /opt/local installieren, die ebenfalls standardmäßig auf dem System installiert ist, werden zuerst die von Ihnen installierten Versionen gefunden, was (wenn auch selten) zu Problemen führen kann Dinge. Es lohnt sich, darauf zu achten.

Gute Informationen finden Sie hier .

In den obigen Abschnitten wird davon ausgegangen, dass Sie Bash für die Shell verwenden. Dies ist die Standardeinstellung unter Mac OS X v10.4 (Tiger) und Mac OS X v10.5 (Leopard), jedoch nicht auf früheren Systemen die stattdessen tcsh verwendet, die eine andere Syntax hat.

Ich hoffe das hilft...

9
avstrallen

Ich neige dazu, mit /usr/local zu gehen. Hier ist eine nette Erklärung, warum , die sich auf Dateisystem-Hierarchie-Standard (FHS) bezieht .⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢, die wiederum über /usr/local sagt:

Tertiäre Hierarchie für lokale Daten, die für diesen Host spezifisch sind. Verfügt normalerweise über weitere Unterverzeichnisse, z. B. bin, lib, share

7
John Topley