我知道许多名称中带有 .d 的目录:
init.d
yum.repos.d
conf.d
Run Code Online (Sandbox Code Playgroud)
是目录的意思吗?如果是,这与什么消除歧义?
更新:关于这.d意味着什么,我有很多有趣的答案,但我的问题的标题没有选好。我把“意思”改为“代表”。
jll*_*gre 132
.d这里的后缀表示目录。当然,这将是不必要的,因为Unix的不需要后缀来表示文件类型,但在特定情况下,什么是需要区分(命令/etc/init,/etc/rc0,/etc/rc1等等),他们使用(目录/etc/init.d,/etc/rc0.d,/etc/rc1.d,。 ..)
这个约定至少是在 Unix System V 中引入的,但可能更早。该init命令曾经位于/etc但现在通常位于/sbin现代 System V 操作系统中。
请注意,此约定已被许多应用程序采用,从单个文件配置文件移动到位于单个目录中的多个配置文件,例如: /etc/sudoers.d
再次,目标是避免名称冲突,不是在可执行文件和配置文件之间,而是在以前的整体配置文件和包含它们的目录之间。
小智 64
摘自Debian 邮件列表(已添加重点):
当分发包变得越来越普遍时,很明显我们需要更好的方法来从多个片段中形成这样的配置文件,这些片段通常由多个独立的包提供。每个需要配置一些共享服务的包应该能够只管理它的配置,而不必编辑其他包使用的共享配置文件。
最常见的约定是允许包含一个充满配置文件的目录,其中任何放入该目录的内容都将变为活动状态并成为该配置的一部分。随着该约定变得更加普遍,该目录通常以其正在替换或扩充的配置文件命名。但由于目录和文件不能同名,需要用某种方法来区分,所以在配置文件名后加了.d。因此,配置文件 /etc/Muttrc 由 /etc/Muttrc.d 中的片段扩充,/etc/bash_completion 由 /etc/bash_completion.d/* 扩充,等等。有时会使用该约定的细微变化,例如 /etc/xinetd.d 补充 /etc/xinetd.conf,或 /etc/apache2/conf。d 补充/etc/apache2/apache2.conf。但这是相同的基本思想。
通常,当您看到 *.d 约定时,它的意思是“这是一个包含一堆配置片段的目录,这些片段将被合并到某些服务的配置中。”
对于第 2 部分,“.d”的原因,我最好的猜测是“分布式”,因为它不是主配置文件的一部分,但仍然是配置的一部分。