Linux 中包含二进制文件的目录

xra*_*alf 8 filesystems conventions executable directory-structure

我注意到当我安装新应用程序时,有几个可能的目录将放置生成的二进制文件。

您可以使用打包管理器进行安装,使用 , 编译makeeasy_install用于 Python 等。

我的$PATH样子如下:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

是否有一些约定或规则来确定应将生成的二进制文件(或库)放置在哪个目录中?

我注意到当你编译源代码时,结果通常是/usr/local/bin/. 这是规则吗?

您能否根据二进制文件编写解释 Unix 哲学(设计和约定决策)的答案,以及为什么会这样(为什么不对所有二进制文件仅使用一个目录)

Sar*_*use 9

没有硬性规定,但每个发行版都有自己的逻辑,把事情放在哪里。通常,/bin用于系统二进制文件、/usr/bin发行版附带的默认应用程序以及/usr/local/bin安装在正常发行版之外的东西。您可以添加X11到任何那些X11二进制文件-/usr/X11/bin/usr/local/X11/bin相当普遍。一些软件也将安装/opt

文章有更深入的解释的事情/。当然,维基百科有一个页面。


use*_*ser 6

除了@Sardathrion的回答之外,sbin目录通常用于各种系统管理工具、低级系统应用程序和各种系统守护进程的二进制文件。

例如,在sbins 中,您会发现诸如/sbin/init(一旦内核完成其内部初始化后控制启动过程)、/sbin/hdparm(读取和设置硬盘操作参数)、/usr/sbin/cupsd(打印守护程序)、/usr/sbin/smartctl(从硬盘读取 SMART 数据)、等等。

一般约定也是/usr由包管理器管理,/usr/local由用户或系统管理员管理(如果两者不相同)。这有历史先例:当磁盘空间昂贵时,/usr 可以通过网络以只读方式挂载,并在许多工作站之间共享,即使系统不支持完全网络引导。然后,每个工作站都可以拥有自己的、相对较小的 /usr/local,以及可能的(相对轻量级的)根文件系统 ( /)。/usr 和 /usr/local 之间的这种区别很可能是大多数软件包在从源代码构建时默认安装到 /usr/local 的原因。