Wo soll ich Befehlszeilenanwendungen speichern?

46

Wenn ich Befehlszeilenanwendungen herunterlade, befinden sie sich in meinem ~/Downloads/Verzeichnis. Ich bin jedoch der Meinung, dass dies der falsche Ort ist, um eine Befehlszeilenanwendung zu finden. Wo soll ich im Mac OS X-Dateisystem Befehlszeilenanwendungen speichern?

/Applications/fühlt sich auch falsch an, es ist mehr für Desktop-Anwendungen. Und /bin/klingt eher nach Anwendungen, die zu OS X gehören.

Jonas
quelle
Ich stimme Ihrer Meinung zu, dass das direkte Ablegen von Dingen in / bin oder / Applications im Allgemeinen eine schlechte Form ist. Die Antwort von Patrix ist der kanonischste Ort, den ich für die allgemeine Befehlszeilenspeicherung von Programmen und Skripten gesehen habe.
bmike
2
Ich sehe dies nicht als Duplikat, da es in der verknüpften Frage eher um das Jonglieren mehrerer Auswahlmöglichkeiten von Drittanbietern geht und es sich eher um eine reine Frage handelt, wohin meine manuell heruntergeladenen Apps gehen.
bmike

Antworten:

44

Da OS X aus einem Unix-Erbe stammt, sollten Sie Systemdateien /usr/local/binfür Befehlszeilenanwendungen und Skripts speichern , die lokal zum System und nicht zu einem bestimmten Benutzer gehören. Möglicherweise müssen Sie dieses Verzeichnis zuerst erstellen, indem Sie Folgendes ausführen:

sudo mkdir -p /usr/local/bin

Sie können jede Befehlszeilenanwendung in diesen Ordner verschieben, indem Sie Folgendes ausführen:

sudo mv my-binary /usr/local/bin/

Um sicherzustellen, dass dies /usr/local/binTeil Ihres Standardsuchpfads in Terminal ist, überprüfen Sie den Inhalt von /etc/pathsund fügen Sie ihn bei Bedarf hinzu:

grep -w /usr/local/bin /etc/paths || sudo sh -c 'echo /usr/local/bin >> /etc/paths'

Einige Benutzer erstellen ein zweites Verzeichnis für Skripte auf Benutzerebene, dies unterliegt jedoch noch mehr den persönlichen Vorlieben.

Normalerweise erstelle ich ein bin-Verzeichnis in jedem Benutzerordner und verstecke es dann im Finder. Sie können jedoch selbst entscheiden, ob Sie es verstecken möchten:

 mkdir ~/bin
 chflags hidden ~/bin

In diesem Fall möchten Sie, dass der Pfad jedes Benutzers diesen Speicherort enthält, indem Sie die Shell-Startskripts ändern ( ~/.bash_profilefür Bash, die die Standard-Shell ist).

 export PATH=$PATH:~/bin

oder indem Sie den Pfad zu jeder App fest codieren, wenn Sie sie ausführen.

nohillside
quelle
3
Dies ist absolut der beste Vorschlag, den ich jedem geben würde, der danach fragt. Ich füge nur 2 Dinge hinzu: 1) /etc/launchd.conf könnte auch ein Ort sein, an dem der Pfad hinzugefügt werden muss, 2) obwohl ich / usr / local / für Unix-Utils verwende, die über homebrewfür meine eigenen Shell-Skripte installiert wurden habe ein ~ / Dropbox / bin /, das ich auch zu meinem $ PATH hinzugefügt habe, damit ich alle meine benutzerdefinierten Shell-Skripte auf allen meinen Macs habe. Aber ich mache das zusätzlich zu / usr / local / bin / not stattdessen.
TJ Luoma
/ usr / local / bin ist der traditionelle UNIX-Spot für die Skripte eines Benutzers, mit dem jeder andere Benutzer auf dem System darauf zugreifen kann. Wenn Sie dort Skripte platzieren, werden diese mühelos in $ PATH aller Benutzer abgelegt. Aber ich glaube, der Mac- Weg, da die meisten Macs einen einzelnen Benutzer haben, besteht darin, ein ~/binVerzeichnis zu erstellen , es unsichtbar zu machen chflags uchg ~/binund es den Benutzern hinzuzufügen ~/.bash_profile, um es zu einem Teil des Benutzers $ PATH zu machen. ~/binist ein hervorragender Standort für Sicherheit und Migration. Andernfalls müssen Sie sich an die Dinge erinnern, die Sie in / usr / local / bin hinterlassen haben. Und ln -s ~/bin ~/Dropbox/ist auch nett.
Chillin
7

Ziehen Sie die Erstellung eines /optVerzeichnisses in Betracht. Dies ist ein weiterer Ort, an dem benutzerdefinierte Unix-Software standardmäßig angezeigt wird.

Matt Stephenson
quelle
5
/opt/ist sehr nützlich für vollständige Anwendungen, während /usr/local/bin/es sich eher für eigenständige Befehlszeilenskripten eignet. Es ist häufig vorzuziehen, /opt/in Fällen zu verwenden, in denen eine Sammlung verwandter Skripts als Bibliothek fungiert (z /opt/myscriptslib/bin/. B. ).
Plasmid87
Vielen Dank für Ihre Ratschläge. Ich habe persönlich den Ordner / opt / erstellt, um meine Software zu platzieren, und dann habe ich nur symbolische Links zu / usr / local / bin für alle ausführbaren Dateien erstellt. Dann muss / opt / myspecific-soft nicht in die Umgebungsvariable path eingefügt werden .
рüффп