it-swarm.cn

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

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

92
whoami

什么?否_/bin/_不是在任何符合FHS的系统上指向_/usr/bin_的符号链接。请注意,仍然有流行的Unices和Linuxes忽略了这一点-例如,在Arch Linux上_/bin_和_/sbin_被符号链接到_/usr/bin_(原因是您不需要_/bin_进行急救/单用户模式,因为您只需要启动实时CD)。

_/bin_

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

_/usr/bin/_

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

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

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

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

79
xenoterracide

更新:对于某些历史记录以及存在/usr的真正原因,请阅读以下内容: http://lists.busybox.net/pipermail/busybox/2010-December/074114.html 。也 this


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

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

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

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

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

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

59
LawrenceC

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

最近,一些Linux发行版将_/bin_合并到_/usr/bin_,并且将_/lib_合并到_/usr/lib_。有时也从_(/usr)/sbin_到_/usr/bin_(Arch Linux)。因此,预计_/usr_与_/_同时可用。

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

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

18
JonnyJD

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

在Solaris和Arch Linux(可能还有其他)上,/bin是到/usr/bin的符号链接。 Arch还具有/sbin/usr/sbin符号链接到/usr/bin

特别要注意的是,/bin是用于“系统管理员”命令,而/usr/bin是用于用户命令的语句是不是true(除非您认为bashls仅适用于管理员,在这种情况下您需要学习很多东西)。管理员命令位于/sbin/usr/sbin中。

8
bahamat

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

5
Chris Quenelle