我在此网站上阅读了此书,但没有任何意义。

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

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

评论

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

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

@xeno是的,我做到了,但是没有坚持足够长时间。在这种情况下,必须删除该页面。如此令人误解。

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

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

#1 楼

什么?在任何符合FHS的系统上,否/bin/都不是/usr/bin的符号链接。请注意,仍然有流行的Unices和Linuxes忽略了这一点-例如,在Arch Linux上/bin/sbin被符号链接到/usr/bin(原因是您不需要/bin来进行救援/单用户模式,因为您可以只需引导一张实时CD)。

/bin

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

/usr/bin/

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

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

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

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

评论


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

– Balki
2011年1月15日12:48

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

– xenoterracide
2011年1月15日13:07

/ bin是在某些操作系统上(例如(某些版本的?)Solaris)到/ usr / bin的链接。

–吉尔斯'所以-不再是邪恶的'
2011-1-15的16:08

@balki,您也许可以在两个非常相似的发行版之间共享/ usr,尽管除非您知道自己在做什么,否则我不会尝试使用它,并且您已准备好以无法启动计算机的方式使实验失败,或吃掉你的数据。还应注意,10.04和10.10之间的许多较大差异将在/ usr中

– xenoterracide
2011年1月20日13:23

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

–多纳托
2015年5月2日在6:17

#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*-二进制文件不属于发行版;在本地编译或手动安装。通常永远不会有/local/bin,而总是有/usr/local/bin/usr/local/share/bin

评论


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

–LawrenceC
2011年1月19日19:16

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

–大卫
2013年9月27日在7:20

这是一个很好的答案。如果可以的话,我会捐给我10分

–两栖动物
13-10-24在15:16

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

–user98877
2015年1月13日14:21

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

–LawrenceC
15年1月13日在16:12

#3 楼

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

最近,一些Linux发行版将/bin合并到/usr/bin中,并将/lib合并到/usr/lib中。有时(/usr)/sbin/usr/bin(Arch Linux)也是如此。
因此/usr有望与/同时可用。

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

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

freedesktop:TheCaseForTheUsrMerge
fedora:UsrMove功能
arch:合并/ bin,/ sbin, / lib到/ usr / bin和/ usr / lib


#4 楼

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

在Solaris和Arch Linux(可能还有其他)上,/bin/usr/bin的符号链接。 Arch还具有与/sbin符号链接的/usr/sbin/usr/bin。特别注意,关于/bin适用于“系统管理员”命令和/usr/bin适用于用户命令的说法是不正确的(除非您认为bashls仅适用于管理员,在这种情况下,您需要学习很多东西。管理员命令位于/sbin/usr/sbin中。

评论


谁说bin仅适用于系统管理员?这就是sbin的目的。

– xenoterracide
2011年1月17日13:08

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

– bahamat
2011-1-17的16:23

#5 楼

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