Исполняемые файлы хранятся в /usr/libexec
Unix-подобных системах.FHS говорит(раздел 4.7. /usr/libexec : Binaries run by other programs (optional)"
:
/usr/libexec
включает внутренние двоичные файлы, которые не предназначены для непосредственного выполнения пользователями или скриптами оболочки. Приложения могут использовать один подкаталог в/usr/libexec
.
В macOS rootless-init
программа, вызываемая launchd
сразу после загрузки, хранится в /usr/libexec
.
Зачем его хранить в , /usr/libexec
если это автономный исполняемый файл, который можно хранить в /usr/bin
или /usr/sbin
? init
и другие программы, не вызываемые напрямую скриптами оболочки, также хранятся в папках типа [/usr]/{bin,sbin}
.
решение1
PATH
Это вопрос поддержки — поставщики платформ за годы работы поняли, что если по умолчанию вставлять двоичные файлы , людиволястали зависеть от их присутствия там, иволяначинают зависеть от конкретных аргументов и вариантов, которые они поддерживают.
Напротив, если что-то указано, /usr/libexec/
это явный признак того, что это считается внутренней деталью реализации, и прямой вызов ее конечным пользователем официально не поддерживается.
Вы все равно можете решить получить доступ к этим двоичным файлам напрямую, но вы просто не получите никакой поддержки или сочувствия от поставщика платформы, если будущее обновление нарушит используемые вами частные интерфейсы.
решение2
OS X не следуетстандарт FHS. Имеет собственную иерархию файловой системы (похожую на иерархию файловой системы FreeBSD). Страница руководстваhier
состояния:
libexec/
- системные демоны и системные утилиты (выполняемые другими программами)
решение3
libexec
предназначен для системных демонов и системных утилит, выполняемых другими программами. То есть, двоичные файлы, помещенные в этот каталог пространства имен, предназначены для потребления другими программами и не предназначены для непосредственного выполнения пользователями.
решение4
Я думаю, что это новее, чем init
— идея, как уже было сказано, в том, чтобы иметь исполняемые файлы (так что их не должно быть в /usr/lib
), которые вы никогда не ожидаете увидеть в чьем-либо $PATH
.