Les exécutables sont stockés dans /usr/libexec
Sur des systèmes de type Unix. Le FHS dit (section 4.7. /usr/libexec : Binaries run by other programs (optional)"
:
/usr/libexec
Inclut des fichiers binaires internes qui ne sont pas destinés à être exécutés directement par les utilisateurs ou les scripts Shell. Les applications peuvent utiliser un seul sous-répertoire sous/usr/libexec
.
Sous Mac OS X, rootless-init
Un programme appelé par launchd
immédiatement après le démarrage est stocké dans /usr/libexec
. Pourquoi serait-il stocké dans /usr/libexec
Alors qu'il s'agit d'un exécutable autonome qui pourrait être stocké dans /usr/bin
Ou /usr/sbin
? init
et d'autres programmes non appelés directement par les scripts Shell sont également stockés dans des dossiers comme [/usr]/{bin,sbin}
.
C'est une question de prise en charge - les fournisseurs de plate-forme ont appris des années d'expérience que si vous mettez des binaires dans PATH
par défaut, les gens seront dépendront de leur présence, et will dépendra des arguments et des options spécifiques qu'ils prennent en charge.
En revanche, si quelque chose est mis dans /usr/libexec/
c'est une indication claire qu'il est considéré comme un détail d'implémentation interne, et l'appeler directement en tant qu'utilisateur final n'est pas officiellement pris en charge.
Vous pouvez toujours décider d'accéder à ces fichiers binaires directement de toute façon, vous n'obtiendrez tout simplement aucun soutien ni sympathie de la part du fournisseur de la plateforme si une future mise à niveau casse les interfaces privées que vous utilisez.
Je pense que c'est plus récent que init
- l'idée est, comme il est dit, d'avoir des exécutables (donc ils ne devraient pas être dans /usr/lib
) que vous ne vous attendriez jamais à avoir chez quelqu'un $PATH
.
OS X ne respecte pas la norme FHS. Il a sa propre hiérarchie de système de fichiers (similaire à la hiérarchie de système de fichiers FreeBSD). La page de manuel hier
indique-
libexec/ system daemons & system utilities (executed by other programs)
libexec
est destiné aux démons système et aux utilitaires système exécutés par d'autres programmes. Autrement dit, les fichiers binaires placés dans ce répertoire d'espace de noms sont destinés à la consommation d'autres programmes et ne sont pas destinés à être exécutés directement par les utilisateurs.