Unix-Standardverzeichnis zum Einfügen von benutzerdefinierten ausführbaren Dateien oder Skripten? [geschlossen]

79

Wenn ich ein benutzerdefiniertes Shell-Skript oder Programme habe, die ich selbst erstellt oder aus dem Internet heruntergeladen habe und die ich über die CLI ausführen möchte, gibt es den Standardspeicherort, um dies in die Linux / Unix-Verzeichnisstruktur aufzunehmen?

/usr/bin ?
/usr/local/bin ?
/usr/lib ?
/usr/sbin ?
/bin ?
/sbin ?
/var ?

Normalerweise lege ich es in meinen Ordner ~ / bin und in PATH, aber es scheint nicht sauber zu sein. Und jedes Mal, wenn ich ein neues Programm heruntergeladen habe, muss ich es erneut in den Pfad setzen.

atedja
quelle
17
Ich schlage vor man hier.
Greg Hewgill
4
Wenn sich Ihr ~ / bin auf dem Pfad befindet, sollten sich auch alle Programme, die Sie in ~ / bin eingeben, auf Ihrem Pfad befinden ... Was meinen Sie damit, dass Sie es erneut auf den Pfad setzen müssen?
tpg2114
Ich bin mit @ tpg2114 einverstanden, ~/binist ein guter Ort für Ihre benutzereigenen Shell-Skripte.
Niklas B.
Ich habe die Programme in einem anderen Unterordner abgelegt: ~ / bin / xyz, ~ / bin / abc. Also muss ich jeden von denen in PATH setzen.
Atedja
1
Sie müssten das Gleiche tun, egal wo Sie es dann platzieren. Wenn Sie / usr / bin / xyz eingeben, müssen Sie dies auch dem Pfad hinzufügen.
tpg2114

Antworten:

87

/usr/local/binexistiert genau zu diesem Zweck für die systemweite Installation. Für den privaten Gebrauch ~/binist dies der De-facto-Standard.

Wenn Sie jede Binärdatei in einem eigenen Unterverzeichnis behalten möchten, können Sie dies tun und einen Symlink zu einem Verzeichnis hinzufügen, das sich bereits in Ihrem befindet PATH. So zum Beispiel

curl -o $HOME/downloads/fnord http://fnord.example.com/script.exe
ln -s $HOME/downloads/fnord $HOME/bin/

zur Verfügung gestellt $HOME/binist in Ihrem PATH. (Es gibt Tools wie stowdiese - und vieles mehr - hinter den Kulissen für Sie.)

Tripleee
quelle
3
Als Tipp für Mac-Benutzer: Wenn Sie ´ ~ / bin´ wählen und nicht möchten, dass dieses Verzeichnis im Finder angezeigt wird , können Sie es mit SETFILE (1) unsichtbar machen : ´setfile -a V ~ / bin´ zum Erstellen unsichtbar und ´setfile -av ~ / bin´ um wieder sichtbar zu machen. Beachten Sie, dass hierfür die Xcode-Tools erforderlich sind .
Henrik
Vielen Dank. Denken Sie auch an sbin für sudoers.
m3nda
@tripleee: Gibt es ein De-facto-Standardverzeichnis für Skripte (Bash, Perl usw.)? Ich denke an zB ~ / etc? Der Punkt ist, dass Sie nicht mit einem cvs / .. auf die gleiche Weise wie Skripte und Binärdateien sichern / verfolgen.
Phs
2
@phs binist für alle Arten von ausführbaren Dateien, Skripten oder geeigneten Binärdateien. Wenn Sie möchten, dass sie direkt der Versionskontrolle binunterliegen, ist es sicherlich eine Option , alle Versionskontrollen durchzuführen. In der Regel haben Sie jedoch für jede oder zumindest jede einzelne Gruppe ein eigenes Projekt. Wenn Sie eine neue Version veröffentlichen, installieren Sie sie in Ihrer eigenen bin. Oder wenn Sie es ernst meinen mit Hundefutter und / oder zu wenig Überraschungen in Ihrem Leben haben, fügen Sie einen Symlink zu Ihrer Entwicklungsversion in Ihr bin.
Tripleee
Danke, ich habe ein ln -s / usr / local / bin / root / gemacht, um die ausführbaren Dateien besser im Auge zu behalten und beide Standards zu respektieren;)
capitano666
17

Dies kann je nach Unix-Geschmack leicht variieren. Ich gehe hier von Linux aus (obwohl dies für OSX gelten könnte). Gemäß dem Filesystem Hierarchy Standard (FHS) (Link von der Linux Standard Base-Arbeitsgruppe ):

Die /usr/localHierarchie wird vom Systemadministrator bei der lokalen Installation von 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 werden können, aber nicht in gefunden werden/usr .

Lokal installierte Software muss innerhalb /usr/localund /usrnicht platziert werden, es sei denn, sie wird installiert, um Software zu ersetzen oder zu aktualisieren /usr.

/usr/local/bin ist oft standardmäßig auf dem Weg.

Beachten Sie, dass Sie nur die ausführbare Datei oder einen Link dazu einfügen sollten /usr/local/bin, der Rest muss möglicherweise in /usr/local/liboder gehen /usr/local/share.

Der /optBaum könnte auch sinnvoll sein:

/opt ist für die Installation von Add-On-Anwendungssoftwarepaketen reserviert.

Ein Paket, das in / opt installiert werden soll, muss seine statischen Dateien in einem separaten Verzeichnis suchen /opt/<package> oder /opt/<provider>Verzeichnisbaum suchen , wobei <package>ein Name das Softwarepaket beschreibt und <provider>der LANANA-registrierte Name des Anbieters ist.

[...]

Die Verzeichnisse / opt / bin, / opt / doc, / opt / include, / opt / info, / opt / lib und / opt / man sind für die Verwendung durch lokale Systemadministratoren reserviert. Pakete können "Front-End" -Dateien enthalten, die vom lokalen Systemadministrator in diese reservierten Verzeichnisse (durch Verknüpfen oder Kopieren) abgelegt werden sollen, müssen jedoch ohne diese reservierten Verzeichnisse normal funktionieren.

(Sie können Ihre eigene Verbindung von machen /opt/your-package/bin/executablein /opt/binund setzen /opt/binauf das , PATHwenn es nicht bereits vorhanden ist.)

Bruno
quelle