it-swarm.cn

在Linux上/ usr / bin与/ usr / local / bin

为什么在Linux中有那么多地方可以放入二进制文件?至少有以下五个:

  1. /bin/
  2. /sbin/
  3. /usr/bin/
  4. /usr/local/bin/
  5. /usr/local/sbin/

而且在我的办公室邮箱中,我没有其中某些文件的写权限。

哪种二进制类型进入这些bins中?

487
Lazer
  1. /bin(和/sbin)适用于需要在较小的/分区上安装较大/usr等分区的程序。如今,它的主要位置是/bin/sh之类的关键程序的标准位置,尽管原始意图可能仍然与例如安装在小型嵌入式设备上。

  2. /sbin/bin不同,用于安装/usr之前所需的系统管理程序(普通用户通常不使用)。

  3. /usr/bin用于分发管理的普通用户程序。

  4. /usr/sbin/usr/bin的关系与/sbin必须与/bin的关系相同。

  5. /usr/local/bin适用于普通用户程序由分发程序包管理器管理,例如本地编译的软件包。您不应将它们安装在/usr/bin中,因为将来的发行版升级可能会在没有警告的情况下对其进行修改或删除。

  6. 您可能会在此时猜测/usr/local/sbin/usr/local/bin还是/usr/sbin/usr/bin

此外,还有/opt用于单片非发行版软件包,尽管在正确集成各种发行版之前,已将Gnome和KDE放在了那里。通常,您应该将其保留给行为不佳的大型第三方软件包,例如Oracle。

600
geekosaur

我建议看一下文件系统层次结构手册页:

man hier

也可以在线获得,例如: http://linux.die.net/man/7/hier 。相关部分已在下面复制。根据您的系统,它可能会有所不同。

名称

    hier-文件系统层次结构的描述

描述

    除其他外,典型的Linux系统具有以下目录:

    /bin
      该目录包含单用户模式下所需的可执行程序,用于启动或修复系统。
    /sbin
      /bin类似,此目录包含引导系统所需的命令,但通常不由普通用户执行。
    /usr/bin
      这是可执行程序的主要目录。普通用户执行的大多数程序(不需要引导或修复系统并且未在本地安装)应放在此目录中。
    /usr/local/bin
      该站点本地程序的二进制文件。
    /usr/local/sbin
      用于系统管理的本地安装程序。
    /usr/sbin
      此目录包含用于系统管理的程序二进制文件,这些文件对于引导过程,安装/usr或系统修复不是必需的。
69
davitenio

Wikipedia中的 文件系统层次结构标准 条目使我在回答该问题时也回答了同样的问题,此外它还具有说明性的表格。

该页面摘录1个

/bin        Essential command binaries that need to be available in single user mode; for all users, e.g., cat, ls, cp.
/usr/bin    Non-essential command binaries (not needed in single user mode); for all users.
/usr/local  Tertiary hierarchy for local data, specific to this Host. Typically has further subdirectories, e.g., bin, lib, share
/usr/sbin   Non-essential system binaries, e.g., daemons for various network-services.
/sbin       Essential system binaries, e.g., fsck, init, route.

1个于2019年6月19日检索; 永久链接

36
Humphrey Bogart

sbin目录包含通常仅由系统管理的程序。普通用户的程序永远不要加入其中。

在启动过程中需要一些程序,并且最终以/bin//sbin/结尾。这些文件必须在挂载文件系统之前可用。检查和安装文件系统所需的诸如mountfsck之类的东西必须存在。

大多数打包程序以/usr/bin//usr/sbin/结尾。这些文件可能位于根文件系统以外的文件系统上。在某些情况下,它们可能位于网络安装的驱动器上。

本地程序和脚本属于/usr/local/bin//usr/local/sbin/。这显然将它们标识为非标准的,并且可能仅在现场提供。

有关更多说明,请尝试运行命令man hier,该命令应提供针对您的发行版的建议文件系统层次结构的描述。您可能还想阅读Wikipedia上的 文件系统层次结构

17
BillThor

在1970年代,UNIX/bin中具有所有官方可执行文件,而/usr/bin是用户主目录(例如/usr/dmr)之下的位置,任何用户都可以存储自己的二进制文件可能也会引起其他人的兴趣。

/usr/bin的打开结果是一大堆未记录的软件,因此Stephen Bourne编写了一个cron script,它每晚检查一次新的二进制文件,并删除所有没有文档或该文件的二进制文件。已更新,但未更新其文档。

1970年代后期,/usr/bin被集成到OS基本发行版中,人们开始使用/usr/local/bin来实现以前的/usr/bin的目的。

一段时间后,系统管理员使用/usr/local/bin来存储从网络(例如USENET)导入的non-local软件,并且由于UNIX公司不希望再次重复与/usr/bin相同的错误。 ,在1987年左右召开了一个文件系统层次结构会议,所有UNIX公司都同意放弃/usr/local/bin,而改用/opt/<vendor>/bin

不幸的是,Linux发行版没有遵循此决定。

11
schily