Eu acho que é mais recente que init
- a ideia é, como se disse, ter executáveis (então eles não deveriam estar em /usr/lib
) que você nunca esperaria ter em $PATH
de ninguém.
Os executáveis são armazenados em /usr/libexec
em sistemas semelhantes ao Unix. O FHS diz (seção 4.7. /usr/libexec : Binaries run by other programs (optional)"
:
/usr/libexec
includes internal binaries that are not intended to be executed directly by users or shell scripts. Applications may use a single subdirectory under/usr/libexec
.
No Mac OS X, rootless-init
um programa chamado por launchd
imediatamente após a inicialização, é armazenado em /usr/libexec
. Por que seria armazenado em /usr/libexec
quando é um executável autônomo que pode ser armazenado em /usr/bin
ou /usr/sbin
? init
e outros programas não chamados diretamente por scripts de shell também são armazenados em pastas como [/usr]/{bin,sbin}
.
Eu acho que é mais recente que init
- a ideia é, como se disse, ter executáveis (então eles não deveriam estar em /usr/lib
) que você nunca esperaria ter em $PATH
de ninguém.
É uma questão de suporte - provedores de plataforma aprenderam com anos de experiência que se você colocar binários em PATH
por padrão, as pessoas irão depender de eles estarem lá, e will depende dos argumentos e opções específicos que eles suportam.
Por outro lado, se algo for colocado em /usr/libexec/
, é uma indicação clara de que é considerado um detalhe de implementação interna, e chamá-lo diretamente como usuário final não é oficialmente suportado.
Você ainda pode decidir acessar esses binários diretamente, de qualquer forma, você não receberá apoio ou simpatia do provedor da plataforma se uma atualização futura quebrar as interfaces privadas que você está usando.
OS X não segue o padrão FHS. Ele tem sua própria hierarquia de sistemas de arquivos (semelhante à hierarquia do sistema de arquivos FreeBSD). A página man hier
states -
libexec/ system daemons & system utilities (executed by other programs)
libexec
é destinado a daemons do sistema e utilitários do sistema executados por outros programas. Ou seja, os binários colocados nesse diretório com namespaces destinam-se ao consumo de outros programas e não se destinam a serem executados diretamente pelos usuários.
Tags fhs