Linux存放二进制文件各个目录简介
Linux下有很多目录都存放有二进制可执行文件,列举如下
/bin
/sbin
/usr/bin
/usr/sbin
/usr/local/bin
/usr/local/sbin
/opt
之前常常困惑于这些不同的目录存放的二进制文件有什么区别,直到看到StackExchange上的一篇文章/usr/bin vs /usr/local/bin on Linux算是大概有了一些了解。现将StackExchange上的内容翻译总结如下,并附了一些在自己的debian系统下测试的例子。
bin与sbin
/bin与/sbin, /usr/bin与/usr/sbin, /usr/local/bin与/usr/local/sbin的区别在于bin是binary的缩写,sbin是system binary的缩写,所以带sbin的目录存放的都是系统相关的二进制文件
/bin与/usr/bin
/bin与/usr/bin从功能上来说是可以合并的,之所以分开是因为一开始Linux系统设计的时候设计了一个比较小的/bin分区用于存放一些核心的程序,以备空间受限的设备无法安装/bin和/usr/bin中的所有程序。在debian系统的脚本语言中,shell位于/bin中(which sh),而python和perl位于/usr/bin中(which python; which perl).
/sbin与/usr/sbin同理。
/usr/bin与/usr/local/bin
/usr/bin存放通过包管理程序(如apt)安装的程序,而/usr/local/bin存放用户自己通过make从源码编译安装的程序。/usr/sbin与/usr/local/sbin同理。
/usr与/opt
opt是optional的简写,意味着/opt目录下的程序是用户附加的可选程序,通常存放一些较大的第三方软件。以我手头的C++项目为例,g++位于/usr/bin (which g++),结构化格式库protobuf位于/usr/local/bin (which protoc),腾讯开源的编译工具blade位于/opt (which blade)
关于Linux文件系统的组织可以参考维基词条:Filesystem Hierarchy Standard
更详细的内容可以参考Linux基金会关于文件系统结构的文档:Filesystem Hierarchy Standard
————————————————
版权声明:本文为优快云博主「da_kao_la」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/da_kao_la/article/details/92431140