Os executáveis são armazenados em /usr/libexec
sistemas do tipo Unix.A ESF diz(seção 4.7. /usr/libexec : Binaries run by other programs (optional)"
:
/usr/libexec
inclui binários internos que não se destinam a serem executados diretamente por usuários ou scripts de shell. Os aplicativos podem usar um único subdiretório em/usr/libexec
.
No macOS, rootless-init
um programa chamado launchd
imediatamente após a inicialização é armazenado no formato /usr/libexec
.
Por que ele seria armazenado /usr/libexec
quando é um executável independente 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}
.
Responder1
É uma questão de suporte - os provedores de plataformas aprenderam com anos de experiência que se você colocar binários PATH
por padrão, as pessoasvaipassou a depender de eles estarem lá, evaipassam a depender dos argumentos e opções específicos que apoiam.
Por outro lado, se algo for inserido, /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 maneira, mas não receberá nenhum suporte ou simpatia do provedor da plataforma se uma atualização futura quebrar as interfaces privadas que você está usando.
Responder2
OS X não segue oPadrão ESF. Ele possui sua própria hierarquia de sistema de arquivos (semelhante à hierarquia de sistema de arquivos do FreeBSD). A página de manualhier
afirma:
libexec/
- daemons de sistema e utilitários de sistema (executados por outros programas)
Responder3
libexec
destina-se a daemons de sistema e utilitários de sistema executados por outros programas. Ou seja, os binários colocados neste diretório com namespace são destinados ao consumo de outros programas e não devem ser executados diretamente pelos usuários.
Responder4
Eu acho que é mais recente do que init
- a ideia é, como foi dito, ter executáveis (para que não deveriam estar no /usr/lib
) que você nunca esperaria ter no $PATH
.