文章摘要
文章解释了Linux系统中bin、sbin、usr/bin和usr/sbin目录的区别:bin和sbin存放系统启动和修复所需的基本命令,usr/bin和usr/sbin存放用户安装的应用程序。这种划分源于早期Unix系统因磁盘空间有限而采取的分区策略,虽然后来硬件发展已不再需要,但这一传统仍被保留下来。
文章总结
理解/bin、/sbin、/usr/bin与/usr/sbin目录划分的历史渊源
本文由Rob Landley撰写,追溯了Unix系统中常见目录划分的历史背景。作者指出,这种目录结构源于1970年代PDP-11计算机的存储限制:
- 历史背景:
- 1969年Unix诞生时使用PDP-7计算机
- 1971年升级到PDP-11时,由于1.5MB的根磁盘空间不足,系统文件被扩展到第二块磁盘(挂载为/usr)
- 后来新增第三块磁盘挂载为/home后,系统文件占据了前两块磁盘
- 现代系统的矛盾:
- 早期设计考虑:确保系统能先挂载/usr(如mount命令不能放在/usr/bin)
- 但现代系统通过initrd/initramfs解决启动依赖问题
- 共享库机制要求/lib与/usr/bin必须版本匹配
- 随着硬盘容量增长(1990年代已达100MB),分区限制已无意义
- 后续发展:
- 各发行版衍生出不同规则(如/tmp与/usr/tmp的清理策略)
- 标准化组织延续了这些历史遗留设计
- 作者建议通过符号链接简化目录结构(如将/bin链接到/usr/bin)
- 现状:
- Busybox只是遵循历史惯例放置文件
- 这些目录划分在现代系统中已失去实际意义
- 嵌入式系统开发者更倾向于简化结构
文章以幽默笔调批评了标准化组织对历史设计的盲目延续,将其比作"官僚主义"的产物。作者最后用星战前传、永远的毁灭公爵和新可乐的比喻,讽刺GPLv3协议同样是不合时宜的产物。
(注:原文中的邮件列表导航信息、重复标题和签名档等无关内容已删除,保留了核心的技术论述和历史分析)
评论总结
以下是评论内容的总结:
历史遗留问题
多数评论认为Linux目录结构的复杂性源于历史原因。- "many rules from many places are now in force that maintain the historical structure" (jagged-chisel)
- "there was of course a time when an immutable OS was the default" (miggol)
对现状的批评
许多评论指出当前目录结构不合理,但改变困难。- "An amalgam of ideas which are there just because" (behnamoh)
- "FHS is now a standard...it hasn't made any sense at all" (shevy-java)
替代方案
有评论提到GoboLinux等替代方案,但未成主流。- "see GoboLinux which has more sane dirs" (behnamoh)
- "Is there a mainstream distro that disregards all the legacy cruft?" (roger_)
技术细节讨论
部分评论深入讨论特定目录的用途差异。- "/usr/local exists so you don't accidentally mess up your distro" (paulddraper)
- "/opt is 'the wild west'...with no distinction" (paulddraper)
幽默与调侃
一些评论用幽默方式表达对复杂性的无奈。- "Obligatory XKCD Standards" (cowlby)
- "Oh, how I wish I was born in the '60s" (M95D)
改进建议
有评论提出重新设计的构想。- "I would set it up like so: /bin for all system binaries" (IgorPartola)
- "packages should turn to portable applications isolated within their own directories" (drtgh)
总结:评论普遍认为Linux目录结构存在历史遗留问题,虽有不合理之处但因兼容性难以改变,同时也有对替代方案和改进建议的讨论。