![在哪里安装非最终用户命令?](https://linux22.com/image/120792/%E5%9C%A8%E5%93%AA%E9%87%8C%E5%AE%89%E8%A3%85%E9%9D%9E%E6%9C%80%E7%BB%88%E7%94%A8%E6%88%B7%E5%91%BD%E4%BB%A4%EF%BC%9F.png)
在我的一个项目中,我有几个专门的命令,它们仅由其他命令调用,并且不应由最终用户调用。这些内部命令应该安装在 PREFIX/bin 中还是最好安装在其他地方,例如 PREFIX/lib 中?
编辑:有问题的内部命令都是 Awk 脚本。由于它们是独立于体系结构的,我考虑将它们安装在 PREFIX/share/PACKAGE-NAME/bin 中。这是一个不错的选择吗?
答案1
Linux文件系统层次结构标准这么说,
/bin 包含系统管理员和用户都可以使用的命令,但在没有安装其他文件系统时(例如在单用户模式下)需要这些命令。它还可能包含由脚本间接使用的命令。
和
/lib 目录包含引导系统和运行根文件系统中的命令所需的共享库映像,即通过 /bin 和 /sbin 中的二进制文件。
和,
用于系统管理的实用程序(以及其他仅限 root 用户的命令)存储在 /sbin、/usr/sbin 和 /usr/local/sbin 中。除了 /bin 中的二进制文件之外,/sbin 还包含启动、恢复、恢复和/或修复系统所必需的二进制文件。已知 /usr 已挂载后(没有问题时)执行的程序通常会放入 /usr/sbin 中。本地安装的系统管理程序应放置在 /usr/local/sbin 中。
最后,
/usr/lib 包含目标文件和库。在某些系统上,它还可能包含不打算由用户或 shell 脚本直接执行的内部二进制文件。应用程序可以使用 /usr/lib 下的单个子目录。如果应用程序使用子目录,则该应用程序专用的所有依赖于体系结构的数据都必须放置在该子目录中。
显然/usr/bin
,还有许多其他选择。你对我的定义,感觉最像/usr/lib
。
答案2
来自Linux 操作系统, 章节4.11:
/usr/share 层次结构适用于所有只读体系结构独立数据文件。
但是,您可能应该使用/usr/libexec/
或/usr/local/libexec/
,按照 FHS 的建议(第 1 章)4.7):
/usr/libexec 包含不打算由用户或 shell 脚本直接执行的内部二进制文件。应用程序可以使用 /usr/libexec 下的单个子目录。
以这种方式使用 /usr/libexec 的应用程序不得同时使用 /usr/lib 来存储内部二进制文件,尽管它们可以将 /usr/lib 用于此处记录的其他目的。