/bin 和 /usr/bin 的区别

who*_*ami 118 linux fhs directory

我在这个网站上阅读了这个,它没有意义。

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文件夹(至少在我正在运行的系统上)。

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

xen*_*ide 95

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

/bin

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

/usr/bin/

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

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

我会注意到,它们可以位于不同的磁盘/分区上,/bin必须与/. /usr/bin可以在另一个磁盘上 - 尽管请注意,此配置已经损坏了一段时间(这就是为什么 systemd 在启动时会警告此配置的原因)。

为了完全正确,一些 unices 可能会忽略 FHS,因为我相信它只是一个 Linux 标准,我不知道它尚未包含在 SUS、Posix 或任何其他 UNIX 标准中,尽管它应该是恕我直言。不过,它是LSB标准的一部分。

  • `/bin` 是一些 unices 上的 `/usr/bin` 的链接,例如(某些版本?)Solaris。 (6认同)
  • @balki 不,它们仍然必须正确链接,这意味着它们必须使用正确版本的库。 (5认同)
  • 让我们还包括 /usr/local/bin 是安装未包含在您的发行版中但旨在供系统范围使用的程序的地方。 (3认同)

Law*_*ceC 75

更新:有关历史和真正原因/usr,请阅读:http : //lists.busybox.net/pipermail/busybox/2010-December/074114.html。还有这个


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

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

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

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

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

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

  • 哦,你可以把所有这些放在一个单独的磁盘或分区上,如果你愿意,为了安全或其他什么。这个想法是你可以卸载/usr,系统将拥有基本功能所需的一切,但它不能运行任何非系统应用程序。 (4认同)
  • 我希望我几年前就知道了。迄今为止我见过的最好的解释。我不能说我看起来很努力,但很高兴终于知道答案。 (2认同)
  • 这是一个很好的答案。如果可以的话,我会捐出我自己的 10 分 (2认同)

Jon*_*yJD 21

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

最近一些Linux发行版都合并/bin/usr/bin与此相关的/lib进入/usr/lib。有时也(/usr)/sbin/usr/bin(Arch Linux)。因此/usr预计将与/.

两种层次结构之间的区别现在被认为是不必要的复杂性。这个想法曾经只/bin在启动时可用,但是有了初始的 ramdisk就过时了。

我知道 Fedora Linux(2011 年)和 Arch Linux(2012 年)采用这种方式,而 Solaris 已经这样做了很长时间(> 15 年)。


bah*_*mat 8

在 Linux 上/bin/usr/bin仍然是分开的,因为/usr在单独的分区上是很常见的(尽管这种配置有时会以微妙的方式中断)。在/bin是所有的命令,你将需要如果你只有/安装。

在 Solaris 和 Arch Linux(可能还有其他)上/bin是指向/usr/bin. 拱门也有/sbin/usr/sbin符号链接到/usr/bin

需要特别注意的/bin是,用于“系统管理员”命令和/usr/bin用户命令的声明是不正确的(除非您认为bash并且ls仅适用于管理员,在这种情况下您有很多东西要学习)。管理员命令在/sbin和 中/usr/sbin


Chr*_*lle 5

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