Каково назначение /usr/libexec?

Каково назначение /usr/libexec?

Исполняемые файлы хранятся в /usr/libexecUnix-подобных системах.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.

Связанный контент