我以为bin
目录是存放的地方二进制文件。如果是这样,那么脚本文件呢?它们应该被放置在其他地方吗?
目录的历史记录是什么以及如果可以的bin
话我应该将脚本文件放在哪里bin
二进制?
答案1
在我看来,bin
它的意思更像是“可执行”,而不是严格的“二进制”。 (最后,所有文件都是二进制的。)甚至在/bin
;中也有相当多的脚本文件。在我的 Debian 系统上,file /bin/* | grep -c 'shell script'
显示有 19 个 shell 脚本。在 /usr/bin 中我还有另外 325 个 shell 脚本。
如果您的脚本可以像编译的应用程序一样使用,只需将其放在适当的bin
目录中,因为人们希望在那里找到它。如果它是一个简单的帮助程序脚本,最好将其放在一个单独的目录中,只是为了强调它本身并不是一个真正的应用程序。
答案2
在 Unix 早期,该/bin
目录仅包含编译后的二进制文件。剧本是后来才出现的。至少从引入该#! interpreter
约定的版本 7 开始,但可能会更晚。
答案3
关于/bin
目录的含义,引用一下简介(0)来自 Unix Research V3 快照的手册页源代码现已在 github 和其他地方提供:
Commands generally reside in directory /bin____ (for
bin___ary programs).
相同的文本出现在Unix 程序员手册(隐含第一版),在介绍,从 1971 年开始。
据我所知,早期 Unix 中没有作为脚本提供的用户命令,直到 V6 才首次出现两个脚本,此时搜索和命令/usr/bin
的约定已经非常完善,因此这将是很自然的事情放置它们的地方——从来没有必要将它们与“二进制文件”分开,现在仍然没有。/bin
/usr/bin
答案4
至于原因,为什么这样命名,为什么不这样命名,/exec
或者其他名称,这一切都可以追溯到旧的早期 Unix 时代,当时人们可以选择选择非常蹩脚的名称,因为仅在开发阶段使用并没有过多考虑在不久的将来 Unix 将成为计算的普遍选择。 Linux 紧随潮流并继承了 Unix 风格的遗产,如操作系统(阅读 POSIX 风格实现),在文件系统规范和标准领域也受到了一定的影响。然而,在 Linux 不断发展的时期,随着它被广泛接受,专门针对 Linux 的标准开始出现。在这些标准中,Linux 文件系统层次结构标准(LFHS)描述了组织系统文件系统层次结构的需要以及文件系统树层次结构中的命名位置。
就 Linux 文件系统层次结构而言,FHS 项目规范文档位于http://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/
/bin 目录包含几个有用的命令,系统管理员和非特权用户都可以使用这些命令。它通常包含 bash、csh 等 shell 以及 cp、mv、rm、cat、ls 等常用命令。因此,与 /usr/bin 相比,该目录中的二进制文件被认为是必不可少的。原因是它包含基本的系统程序,即使只安装了包含 / 的分区,这些程序也必须可用。如果您需要修复其他分区但无法访问共享目录(即您处于单用户模式,因此无法访问网络),则可能会出现这种情况。它还包含引导脚本可能依赖的程序。
因此,它们不一定是二进制可执行文件(ELF 文件),还可以是可执行且对于系统功能至关重要的脚本,可以进入 /bin 目录。
另外,我想在这里指出,我猜这些标准已经实施了差不多 30 多年了。在快速变化的时代,人们可能会提出新的标准,这可能会完全删除层次结构中当前使用的符号。最近网上出现的此类动物之一是objectRoot
,这是最近发布的一项重新设计和消除层次结构不便的提案。更多细节:http://objectroot.org/root/