Ausführbare Dateien werden /usr/libexec
auf Unix-ähnlichen Systemen gespeichert.Das sagt die FHS(Abschnitt 4.7. /usr/libexec : Binaries run by other programs (optional)"
:
/usr/libexec
enthält interne Binärdateien, die nicht für die direkte Ausführung durch Benutzer oder Shell-Skripte vorgesehen sind. Anwendungen können ein einzelnes Unterverzeichnis unter verwenden/usr/libexec
.
Unter macOS wird rootless-init
ein Programm, das launchd
unmittelbar nach dem Booten aufgerufen wird, in gespeichert /usr/libexec
.
Warum sollte es in gespeichert werden, wenn es eine eigenständige ausführbare Datei ist, die in oder /usr/libexec
gespeichert werden könnte ? Und andere Programme, die nicht direkt von Shell-Skripten aufgerufen werden, werden auch in Ordnern wie gespeichert ./usr/bin
/usr/sbin
init
[/usr]/{bin,sbin}
Antwort1
Es ist eine Frage der Unterstützung - Plattformanbieter haben aus jahrelanger Erfahrung gelernt, dass, wenn man PATH
standardmäßig Binärdateien einfügt, die LeuteWillebin darauf angewiesen, dass sie da sind, undWillehängen von den spezifischen Argumenten und Optionen ab, die sie unterstützen.
Wenn dagegen etwas eingefügt wird, /usr/libexec/
ist dies ein klares Anzeichen dafür, dass es sich um ein internes Implementierungsdetail handelt und der direkte Aufruf als Endbenutzer nicht offiziell unterstützt wird.
Sie können sich dennoch dazu entschließen, direkt auf diese Binärdateien zuzugreifen. Sie erhalten dann jedoch weder Unterstützung noch Verständnis vom Plattformanbieter, wenn ein zukünftiges Upgrade die von Ihnen verwendeten privaten Schnittstellen beschädigt.
Antwort2
Antwort3
libexec
ist für System-Daemons und System-Dienstprogramme gedacht, die von anderen Programmen ausgeführt werden. Das heißt, die in diesem Namespace-Verzeichnis abgelegten Binärdateien sind für die Nutzung durch andere Programme gedacht und nicht für die direkte Ausführung durch Benutzer.
Antwort4
Ich glaube, es ist neuer als init
– die Idee ist, wie gesagt, ausführbare Dateien zu haben (sie sollten also nicht in sein /usr/lib
), von denen man nie erwarten würde, dass sie in irgendjemandes vorhanden sind $PATH
.