可執行檔儲存在/usr/libexec
類別 Unix 系統上。FHS 表示(部分4.7. /usr/libexec : Binaries run by other programs (optional)"
:
/usr/libexec
包括不打算由使用者或 shell 腳本直接執行的內部二進位。應用程式可以使用 下的單一子目錄/usr/libexec
。
在 macOS 上,啟動後立即rootless-init
呼叫的程式launchd
儲存在/usr/libexec
.
/usr/libexec
當它是可以儲存在/usr/bin
or中的獨立可執行檔時,為什麼要儲存在 中/usr/sbin
?init
其他不由shell腳本直接呼叫的程式也儲存在[/usr]/{bin,sbin}
.
答案1
這是一個可支援性的問題 - 平台提供者從多年的經驗中了解到,如果您PATH
默認放入二進位文件,人們將要開始依賴他們的存在,並且將要取決於他們支持的具體論點和選項。
相較之下,如果放入某些內容,/usr/libexec/
則明確表明它被視為內部實作細節,並且不正式支援作為最終用戶直接呼叫它。
無論如何,您可能仍然決定直接存取這些二進位文件,如果未來的升級破壞了您正在使用的私有接口,您將不會獲得平台提供者的任何支援或同情。
答案2
答案3
libexec
適用於由其他程式執行的系統守護程式和系統實用程式。也就是說,放入此命名空間目錄中的二進位檔案旨在供其他程式使用,而不是由使用者直接執行。
答案4
我認為它比init
- 這個想法更新,就像它所說的那樣,擁有/usr/lib
你永遠不會期望在任何人的$PATH
.