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


83

我在这个网站上阅读了这篇文章,没有任何意义。

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

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


那些家伙不是在谈论特定的机器吗?
tshepang 2011年

1
如果您继续单击,则@tshepang很好,在本文中,您将到达UNIX / linux基本入门。所以我要说不,他们不是在谈论特定的机器
xenoterracide

3
@xeno是的,我做到了,但是没有坚持足够长时间。在这种情况下,必须删除该页面。真是误导。
tshepang 2011年

3
该文档可以被视为“历史参考”。如果您查看“关于此文档”页面,将会发现它最初于1993年拥有版权。如果您查看参考书目,则它的最新来源是1997年。自那以后,大多数流行的类Unix操作系统都发生了重大变化然后。
gabe。

1
任何对此配置的历史性感兴趣的人都应阅读以下内容:lists.busybox.net/pipermail/busybox/2010-December/074114.html
JDS

Answers:


73

什么?在任何符合FHS的系统上,no /bin/都不是符号链接/usr/bin。需要注意的是仍然有忽略这个流行的Unix系统和Linux版本-例如,/bin/sbin被符号链接到/usr/bin上的Arch Linux(推理是,你并不需要/bin救援/单用户模式,因为你刚刚启动的现场光盘)。

/bin

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

/usr/bin/

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

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

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

为了完全正确,某些联合会可能会忽略FHS,因为我认为它只是Linux标准,尽管它应该是IMHO,但我不知道它尚未包含在SUS,Posix或任何其他UNIX标准中。它是LSB标准的一部分。


这是否意味着我可以在两个发行版之间共享/ usr / bin?像ubuntu 10.04和10.10?
巴尔基2011年

4
@balki不,它们仍然必须正确链接,这意味着它们必须使用针对其构建的库的正确版本。
xenoterracide 2011年

6
/bin是指向/usr/bin某些unice(例如Solaris的某些版本)的链接。
吉尔斯

1
@balki,您也许可以/usr在两个非常相似的发行版之间共享,尽管除非您知道自己在做什么,否则我不会尝试使用它,并且您准备让实验失败,导致计算机无法启动或吃东西。您的数据。另外注意,许多的10.04和10.10之间的巨大差异将在/usr
xenoterracide

2
让我们也包括/ usr / local / bin是您的发行版中未包含但打算在系统范围内使用的程序的安装位置。
多纳托2015年

56

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

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

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

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

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

*local*-二进制文件不属于发行版;在本地编译或手动安装。通常从不存在,/local/bin但始终存在/usr/local/bin/usr/local/share/bin


4
哦,出于安全性考虑,您可以将所有这些文件放在单独的磁盘或分区上。这个想法是,您可以卸载/ usr,系统将具有基本功能所需的全部功能,但它不能运行任何非系统应用程序。
LawrenceC

1
我希望我几年前会知道。到目前为止,我所看到的最好的解释。我不能说我看起来很努力,但很高兴终于知道答案。
大卫

2
这是一个很好的答案。如果可以的话,我会捐出10分给自己
两栖游戏使用者

/usr/bin没有用户登录时,@ ultrasawblade是否会自动卸载?例如,当LINUX启动并显示登录身份验证时,是否/usr/bin挂载?

1
不,它是在引导时挂载的,除非您卸载了它,否则除非您的系统配置异常,否则它将保持挂载状态。
LawrenceC

17

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

最近一些Linux发行版都合并/bin/usr/bin与此相关的/lib进入/usr/lib。有时还(/usr)/sbin/usr/bin(Arch Linux的)。因此/usr预计与可以同时使用/

现在,将两个层次结构之间的区别视为不必要的复杂性。这个想法曾经只有/bin在启动时才可用,但是拥有一个初始的ramdisk使其过时了。

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


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


1
谁说bin只适合系统管理员?那sbin是为了什么。
xenoterracide

报价错误。抱歉,我的阅读速度太快。
bahamat 2011年

5

有许多基于UNIX的系统。Linux,AIX,Solaris,BSD等。原始报价提供了适用于所有类型的历史上下文。如果您查看任何一个特定的系统,将会看到不同的结果。原始报价的最后一句话仅适用于某些版本和发行版。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.