/bin 和 /usr/bin 之间的区别

/bin 和 /usr/bin 之间的区别

我在这个网站上读到了这篇文章,但它没有意义。

http://rcsg-gsir.imsb-dsgi.nrc-cnrc.gc.ca/documents/basic/node32.html

UNIX 首次编写时,/bin物理 /usr/bin上驻留在两个不同的磁盘上:/bin一个较小且较快(较昂贵)的磁盘,另一个/usr/bin较大且较慢的磁盘。现在,/bin是一个符号链接 /usr/bin:它们本质上是相同的目录。

但是,当您访问ls/bin文件夹时,它的内容比该文件夹少得多/usr/bin(至少在我正在运行的系统上)。

那么有人可以解释一下区别吗?

答案1

什么? no/bin/不是/usr/bin任何 FHS 兼容系统上的符号链接。请注意,仍然有流行的 Unices 和 Linux 忽略这一点 - 例如,/bin/sbin符号链接到/usr/binArch Linux(原因是您不需要/bin救援/单用户模式,因为您只需启动实时光盘)。

/bin

包含系统管理员和用户都可以使用的命令,但在没有安装其他文件系统时(例如在单用户模式下)需要这些命令。它还可能包含由脚本间接使用的命令

/usr/bin/

这是系统上可执行命令的主目录。

本质上,/bin包含系统紧急修复、启动和单用户模式所需的可执行文件。/usr/bin包含任何不需要的二进制文件。

我要注意的是,它们可以位于单独的磁盘/分区上,/bin必须与/./usr/bin可以位于另一个磁盘上 - 尽管请注意此配置已经被破坏了一段时间(这就是为什么例如 systemd 在启动时警告此配置)。

为了完全正确,一些 unice 可能会忽略 FHS,因为我相信它只是一个 Linux 标准,我不知道它是否已包含在 SUS、Posix 或任何其他 UNIX 标准中,尽管它应该是恕我直言。它是最低有效位标准虽然。

答案2

更新:了解一些历史和真正的原因/usr,请阅读此文:http://lists.busybox.net/pipermail/busybox/2010-December/074114.html。还


/sbin- 启动、低级系统修复或维护所需的二进制文件(运行级别 1 或 S)

/bin- 在任何运行级别正常/标准系统运行所需的二进制文件。

/usr/bin- 应用程序/分发二进制文件旨在由本地登录的用户访问

/usr/sbin- 支持或配置 /sbin 中内容的应用程序/分发二进制文件。

/usr/share/bin- 通过网络访问的应用程序/分发二进制文件或脚本,即 Apache Web 应用程序

*local*- 二进制文件不属于发行版;本地编译或手动安装。通常不会有 a/local/bin但总是有/usr/local/binand /usr/local/share/bin

答案3

关于这个问题的某种“更新”:

最近,一些 Linux 发行版正在合并/bin/usr/bin相关地合并/lib/usr/lib.有时也(/usr)/sbin/usr/bin(Arch Linux)。因此/usr预计将同时上市/

现在,这两个层次结构之间的区别被认为是不必要的复杂性。这个想法曾经是只/bin在启动时可用,但是有一个初始虚拟磁盘使这变得过时。

我知道 Fedora Linux (2011) 和 Arch Linux (2012) 正在走这条路,Solaris 也这样做了很长时间(> 15 年)。

答案4

有许多基于 UNIX 的系统。 Linux、AIX、Solaris、BSD 等。原始引用给出了适用于所有风格的历史背景。如果您查看任何一种特定系统,您都会看到不同的结果。原始引用的最后一句仅特定于某些版本和发行版。

相关内容