Linux 为什么有 bin 目录,还有一个 usr 目录下的 bin? - 蝈蝈俊

Linux 为什么有 bin 目录,还有一个 usr 目录下的 bin? - 蝈蝈俊

💡 原文中文,约1900字,阅读约需5分钟。
📝

内容提要

Linux的/bin与/usr/bin目录源于1971年Unix系统因1.5MB硬盘容量不足而分盘的历史。当时根目录存必需命令,第二块盘存用户程序,形成/bin和/usr/bin之分,并衍生出/sbin等管理员目录。如今硬盘容量大增,现代Linux发行版将/bin和/sbin设为指向/usr/bin和/usr/sbin的软链接,终结了这段历史,成为数字化“化石”。

🔎

延伸解读

历史遗留的目录结构

Linux的/bin与/usr/bin之分源于1971年Unix系统在PDP-11上开发时,因RK05磁盘容量仅1.5MB,不得不将系统文件分盘存放。根目录存放启动必需命令,第二块盘(/usr)存放用户程序,从而形成两个bin目录。这一历史原因解释了为何现代Linux仍保留这种看似冗余的结构。

现代系统的软链接合并

如今硬盘容量已大幅提升,现代Linux发行版(如Ubuntu、Fedora、Arch)将/bin和/sbin分别软链接到/usr/bin和/usr/sbin,逻辑上合并了目录。用户可通过`ls -l /bin`查看链接指向,这标志着历史遗留的物理分盘已终结,但目录结构作为“化石”被保留。

安全与权限的划分

除/bin与/usr/bin外,/sbin和/usr/sbin存放管理员专用命令(如fdisk、mkfs),普通用户路径默认不包含这些目录,从物理上隔离了危险操作。这种划分源于早期分盘时的设计,至今仍影响系统安全策略,体现了目录结构对权限管理的实际作用。

Q&A

Linux中/bin和/usr/bin目录为什么是分开的?

这源于1971年Unix系统在PDP-11上开发时,使用的RK05磁盘容量仅1.5MB,根目录下的/bin装不下所有命令,于是增加第二块盘并挂载为/usr,在其中建立/usr/bin存放额外程序,从而形成两个bin目录。

/bin和/usr/bin在功能上有什么区别?

/bin存放系统启动和修复时必需的命令,如ls、mount、fsck;/usr/bin存放系统正常运行后使用的命令,如编辑器、游戏等。

/sbin和/usr/sbin中的s代表什么?

s代表System或Superuser,这些目录存放管理员专用的系统管理命令,如fdisk、mkfs,普通用户默认路径不包含它们,以防误操作。

为什么现代Linux发行版将/bin和/sbin设为软链接?

因为硬盘容量已大幅提升,不再需要为节省空间而分离目录,现代发行版(如Ubuntu、Fedora、Arch)将/bin指向/usr/bin,/sbin指向/usr/sbin,以简化目录结构。

如何验证自己的Linux系统上/bin是否为软链接?

在终端执行ls -l /bin,如果显示/bin -> /usr/bin,则说明是软链接;同样可检查/sbin。

为什么当初不把/bin和/usr/bin合并?

因为担心第二块盘(/usr)无法启动时,系统仍能依靠根目录下的/bin中的必需命令进行修复,所以保持分离以确保系统可靠性。

🏷️

标签

➡️

继续阅读