我知道许多名称都带有.d的目录:

init.d
yum.repos.d
conf.d


这是否意味着目录?如果是,请问这是什么意思?

UPDATE:关于.d的含义,我有很多有趣的答案,但我的问题的标题选择不当。我将“平均”更改为“代表”。

评论

有关.d的来源,请参见Ask Ubuntu上msw对此相关问题的评论。

@Gilles,哈,我当时以为它晚于System-V,但是,是的,即使'.d'仍然没有意义,它只是从我所知道的中选择的。
@Gilles:有趣,答案似乎是:根据链接中第一个答案的第一个评论,解释已经丢失了...

不知道为什么要在init.d中使用.d,但是似乎几乎所有自定义配置文件都位于RHEL / CentOS / Fedora中的.d目录中。

@Liu Yan-的确,我无法以任何可以解释为一致的方式对其进行解释。

#1 楼

.d后缀在这里表示目录。当然,这是不必要的,因为Unix不需要后缀来表示文件类型,但是在这种特定情况下,需要对命令(/etc/init/etc/rc0/etc/rc1等)和它们使用的目录进行歧义化(/etc/init.d/etc/rc0.d/etc/rc1.d,...)

至少在Unix System V中引入了此约定,但可能更早了。 init命令曾经位于/etc中,但现在通常在现代System V操作系统的/sbin中。

请注意,从一个文件配置文件移动到多个配置文件的许多应用程序都采用了此约定。位于单个目录中,例如:/etc/sudoers.d

这里的目的是避免名称冲突,而不是在可执行文件和配置文件之间,而不是在以前的整体配置文件和包含它们的目录之间,发生冲突。 br />

评论


+1,我认为您是对的,但到目前为止,没有人为他的理论提供任何报价

– greg0ire
2010-11-14 12:04

我认为,与其说是一种实际的明确标准,不如说是一种在人们身上发展起来的惯例。

– Shadur
2011年8月10日下午4:35

在不使用--color选项(显式指定或LS_OPTIONS环境变量的一部分)的情况下执行ls命令(不是ls -al)时,使用“ .d”可使目录从列表中脱颖而出。这就是为什么我一直认为这样做已经完成的原因。

– LawrenceC
2012年12月25日在16:22

^颜色不是视觉上标记目录的唯一或最佳方法。 ls -F可以做到这一点,还有更多有用的事情。

– underscore_d
15年10月29日在22:20

#2 楼

从Debian邮件列表中摘录(强调):


当分发包装越来越普遍时,很明显
我们需要更好的方法来形成这样的配置文件
的多个片段,通常由多个独立的软件包提供。每个需要配置某些共享服务的软件包都应该能够仅管理其配置,而不必编辑其他软件包所使用的共享配置文件。

所采用的最常见约定是允许包括一个充满配置文件的目录,其中放到该目录中的所有内容都将变为活动状态,并且是该配置的一部分。随着该约定
的普及,该目录通常以正在替换或扩充的配置文件命名。但是由于
不能具有相同名称的目录和文件,因此需要使用某些方法进行区分,因此.d会附加到
配置文件名的末尾。因此,配置文件/ etc / Muttrc在/etc/Muttrc.d中由片段扩展,/ etc / bash_completion在/etc/bash_completion.d/*中扩展,依此类推。有时会使用对该约定的细微变化,例如/etc/xinetd.d来补充
/etc/xinetd.conf,或/etc/apache2/conf.d来补充
/等/apache2/apache2.conf。但这是相同的基本思想。

通常,当您看到* .d约定时,它的意思是“这是一个目录
,其中包含一堆将被合并在一起的配置片段。
为某些服务进行配置。“




对于第二部分,“。d”的原因,我最好的猜测是“分布式的”,而不是一部分主要配置文件,但仍是配置的一部分。

评论


令人惊讶的是……我想这是对“目录”的支持,意思是“这是配置的目录部分”。

– greg0ire
2010-11-13 22:50

显然可以。为什么有人会读到这并得出结论,.d意味着我以外还有其他任何事情!但是该资源仅显示了Debian在某种情况下使用Unix早期以来存在的约定的理由。我想知道这个Debian维护者是否故意简化-还是真的以为Debian发明了这种做法。

– underscore_d
2015年10月29日在22:22



#3 楼

如果您在目录名称的末尾谈论“ .d”,那么这个答案是正确的,它只是“目录”的标记。

请不要将其与“ d”混淆文件名,例如“ syslogd”,代表守护程序。后台运行的计算机进程。守护程序的父进程通常(但并非总是)是init进程(PID = 1)。进程通常通过派生子进程,然后立即退出其父进程而成为守护程序,从而导致init采纳该子进程。这是该过程的简化视图,因为通常会执行其他操作,例如将守护进程与任何控制tty分离。为此,在某些UNIX系统中存在诸如daemon(3)之类的便利例程。


评论


不完全是,这些是目录名。

–基思
2011年7月21日在6:04

@Keith:糟糕,我误以为他说的是以“ d”结尾的文件,例如syslogd,而不是以“ .d”结尾的目录。我会尽快编辑。

–幽灵
2011年7月21日在6:14



这就是我的想法,但我发现它经常在配置目录中用于未守护的程序,例如sysctl.d,modprobe.d ..会不合适吗?

– Tim Post
2011年7月21日在6:25

@Tim Post:请参阅以上2条评论(以及Keith的答案),我将尽快编辑我的答案。

–幽灵
2011年7月21日在6:28

编辑(15小时)

–幽灵
2011年7月21日在7:53

#4 楼

这并不意味着目录本身,基本上发生的是,以.d结尾的目录(请注意,这些目录通常只存在于/etc中),带有配置部分。通用默认值,例如/etc/yum.conf,但是对于用户或其他软件包,有一种易于使用的方法可以安全地附加自己的yum配置,并且不会被覆盖。

作为示例yum ...

如果我想在RHEL5或CentOS Box上开始使用EPEL,我可以在/etc/yum.repos.d文件夹中配置一个新的存储库(例如/etc/yum.repos.d/epel.repo)或安装创建的epel-release软件包自动更改文件,而无需修改我的默认配置或引起不需要发生的文件冲突。

会发生的情况是,大多数程序将读取其默认配置(例如/etc/yum.conf),然后遍历它们的.d文件夹(包括正在运行的程序中的配置摘要)。

希望它为您解释。

评论


+1,这说明了很多问题,但是...不是'd'字母的选择。

– greg0ire
2010-11-13 17:52

选择是否需要解释?它只是随着时间的推移而发展起来的一种惯例,FHS并未(从快速的角度)对其进行定义,但是它可能已包含在LSB标准中。我记得Cron是最早的人之一。 (编辑:实际上它应该是init)

– N J
2010-11-13 18:18



#5 楼

更一般而言,.d目录(/etc/httpd/conf.d、/etc/rc.d、/etc/是另一个示例),指示包含的文件如果匹配则将被读取和使用(通常用于配置)给定的模式,不需要显式添加到主列表中。

因此,如果将* .repo格式的文件添加到/etc/yum.repos.d,则yum将在运行时使用它无需将其添加到配置/etc/yum.conf列表中。如果将格式为* .conf的文件添加到/etc/http/conf.d,则Apache将读取它们,而无需显式添加到/etc/httpd/conf/httpd.conf。类似地,将chkconfig更改为/etc/init.d中的文件,将/etc/cron.d中的cron作业。

评论


+1,但...与上述相同。

– greg0ire
2010-11-13 17:53

@greg:由于对答案进行排序的方式多种多样,“上方”和“下方”是指代(评论)其他答案的差劲方法。对于此类基于位置的描述,“最旧的”和“最新的”排序产生相反的含义,当按“投票”排序时,两个答案的相对位置可能会随时间而变化。

–克里斯·约翰森(Chris Johnsen)
2010-11-14 5:44

@克里斯约翰森:这是我意识到的,但为时已晚。我指的是对新泽西州回答的评论。

– greg0ire
2010-11-14在11:17

#6 楼

就像文件可以带有.ext来指定文件的类型(通常称为“扩展名”)一样,目录有时也带有.d来表示它是目录而不是文件。这就是它的类型。默认的ls输出不会在视觉上区分目录和文件,因此.d只是一个古老的约定,用于在此类清单中显示其类型(目录)。

评论


此外,.d后缀可防止与名称相似的文件发生冲突。例如,您可以拥有一个配置文件/etc/apt/sources.list和一个目录/etc/apt/sources.list.d。

– jmtd
2011年7月21日在8:45

^我什至可以说这不是“加法”,而首先是约定的理由。 Unix / Linux从来都不是必须包含事物扩展的宝贵资源,尤其是在早期,所以我怀疑这一扩展没有充分的理由。

– underscore_d
15年10月29日在22:28

#7 楼

我认为但无法证明,.d指示该目录与守护程序相关。

证据表明这至少是合理的:

sudo find / -maxdepth 3 -name "*.d"


在古老的Unix历史的一小部分深处,仍然在蜘蛛网后面的我脑海中回荡,这呼唤我作为正确的答案。我相信这可能是在恐龙开始灭绝之前,第一批哺乳动物在地球上漫游,而man页不仅保留在系统上,而且还保留在用脚测量的架子上。

评论


最后为the妄症+1,但我认为这与yum.repos.d不太吻合...

– greg0ire
2010-11-13 22:47

我相信,表明.d的目的是从相关的相似名称文件中消除目录歧义的答案是正确的。我已经投票支持E-man和jlliagre。

–丹尼斯·威廉姆森
2010-11-14 23:22

问题是“ .d”代表什么,我已经收到很多关于为什么存在“ .d”的解释,但是很少有人给出含义的答案,但没有引用任何来源。从个性上讲,我认为这意味着目录。

– greg0ire
10 Nov 15 '19:41

yum是较新的发明。

–丹尼斯·威廉姆森
16-09-22在21:04