web-dev-qa-db-fra.com

Que signifie le .d dans les noms de répertoire?

Je connais de nombreux répertoires avec .d dans leur nom:

init.d
yum.repos.d
conf.d

Est-ce que cela signifie répertoire? Si oui, de quoi cela équivaut-il?

MISE À JOUR: J'ai eu beaucoup de réponses intéressantes sur ce que le .d signifie, mais le titre de ma question n'a pas été bien choisi. J'ai changé "signifie" en "représente".

123
greg0ire

Le .d suffixe signifie ici répertoire. Bien sûr, cela serait inutile car Unix ne nécessite pas de suffixe pour désigner un type de fichier mais dans ce cas spécifique, quelque chose était nécessaire pour lever l'ambiguïté des commandes (/etc/init, /etc/rc0, /etc/rc1 et ainsi de suite) et les répertoires qu'ils utilisent (/etc/init.d, /etc/rc0.d, /etc/rc1.d, ...)

Cette convention a été introduite au moins avec Unix System V mais peut-être plus tôt. La commande init était située dans /etc mais est généralement maintenant dans /sbin sur les systèmes d'exploitation System V modernes.

Notez que cette convention a été adoptée par de nombreuses applications passant d'un fichier de configuration de fichier unique à plusieurs fichiers de configuration situés dans un même répertoire, par exemple: /etc/sudoers.d

Là encore, l'objectif est d'éviter les conflits de noms, non pas entre l'exécutable et le fichier de configuration mais entre l'ancien fichier de configuration monolithique et le répertoire les contenant.

108
jlliagre

Extrait d'une liste de diffusion Debian (italique ajouté):

Lorsque l'emballage de distribution est devenu de plus en plus courant, il est devenu clair que nous avions besoin de meilleures façons de former de tels fichiers de configuration à partir de plusieurs fragments, souvent fournis par plusieurs packages indépendants. Chaque package qui doit configurer un service partagé doit pouvoir gérer uniquement sa configuration sans avoir à modifier un fichier de configuration partagé utilisé par d'autres packages.

La convention la plus courante adoptée était de permettre l'inclusion d'un répertoire plein de fichiers de configuration, où tout ce qui était déposé dans ce répertoire deviendrait actif et ferait partie de cette configuration. À mesure que cette convention se généralisait, ce répertoire était généralement nommé d'après le fichier de configuration qu'il remplaçait ou augmentait. Mais comme on ne peut pas avoir un répertoire et un fichier du même nom, une méthode était nécessaire pour les distinguer, donc .d a été ajouté à la fin du nom du fichier de configuration. Par conséquent, un fichier de configuration/etc/Muttrc a été augmenté de fragments dans /etc/Muttrc.d,/etc/bash_completion a été augmenté de /etc/bash_completion.d/*, etc. Parfois, de légères variations sur cette convention sont utilisées, telles que /etc/xinetd.d pour compléter /etc/xinetd.conf ou /etc/Apache2/conf.d pour compléter /etc/Apache2/Apache2.conf. Mais c'est la même idée de base.

Généralement, lorsque vous voyez cette convention * .d, cela signifie "il s'agit d'un répertoire contenant un tas de fragments de configuration qui seront fusionnés dans la configuration d'un service."


Pour la partie 2, la raison du ".d", ma meilleure supposition serait "distribuée", comme dans ne fait pas partie du fichier de configuration principal, mais fait toujours partie de la configuration.

58
E-man

Si vous parlez de ".d" à la fin des noms de répertoire, cette réponse a raison, c'est juste un marqueur pour "répertoire".

Ne le confondez pas avec "d" au et d'un nom de fichier, comme "syslogd", qui signifie démon . Un processus informatique exécuté en arrière-plan.

le processus parent d'un démon est souvent (mais pas toujours) le processus init (PID = 1). Les processus deviennent généralement des démons en forçant un processus enfant, puis en quittant immédiatement leur processus parent, ce qui oblige init à adopter le processus enfant. Il s'agit d'une vue quelque peu simplifiée du processus, car d'autres opérations sont généralement effectuées, telles que la dissociation du processus démon de tout terminal de contrôle. Des routines pratiques telles que daemon (3) existent dans certains systèmes UNIX à cet effet.

12
Philomath

Cela ne signifie pas un répertoire en soi, ce qui se passe essentiellement, c'est que les répertoires qui se terminent par .d (notez que ce ne sont généralement que dans /etc), prenez les parties de configuration.

Ceci est conçu pour que les distributions puissent inclure des valeurs par défaut universelles, par exemple /etc/yum.conf, mais il existe une méthode facile à utiliser pour que les utilisateurs ou d'autres packages ajoutent leurs propres configurations yum d'une manière sûre qui ne sera pas écrasée.

Par exemple pour miam ...

Si je voulais commencer à utiliser EPEL sur ma RHEL5 ou CentOS Box, je peux configurer un nouveau référentiel dans le /etc/yum.repos.d dossier, (par exemple /etc/yum.repos.d/epel.repo) ou installez le package epel-release qui crée le fichier automatiquement, sans modifier ma configuration par défaut ni provoquer des conflits de fichiers qui n'ont pas besoin de se produire.

Ce qui se passera, c'est que la plupart des programmes liront leur configuration par défaut (/etc/yum.conf par exemple), puis parcourez leur .d dossiers contenant des extraits de configuration dans le programme en cours d'exécution.

J'espère que cela vous l'expliquera.

4
N J

Tout comme les fichiers peuvent avoir .ext pour spécifier de quel type de fichier il s'agit (communément appelé "extension"), les répertoires ont parfois .d pour montrer qu'il s'agit d'un répertoire et non d'un fichier. Voilà son type. La sortie ls par défaut ne différencie pas visuellement les répertoires et les fichiers, donc le .d est juste une ancienne convention pour afficher son type (répertoire) dans de telles listes.

3
Keith

Plus généralement, les répertoires .d (/etc/httpd/conf.d, /etc/rc.d,/etc/étant un autre exemple), indiquent que les fichiers contenus seront lus et utilisés, souvent pour la configuration, s'ils correspondent un modèle donné et ne nécessitent pas d'être explicitement ajouté à une liste principale.

Donc, si vous ajoutez des fichiers de la forme * .repo à /etc/yum.repos.d, yum l'utilisera lors de l'exécution sans avoir besoin de l'ajouter à une liste de configurations /etc/yum.conf. Si vous ajoutez des fichiers de la forme * .conf à /etc/http/conf.d, ils seront lus par Apache sans avoir besoin d'être explicitement ajoutés à /etc/httpd/conf/httpd.conf. De même, chkconfig aux fichiers dans /etc/init.d, cron jobs dans /etc/cron.d.

2
Tim

Je pense, mais je ne peux pas documenter, que le .d indique que le répertoire est associé à un aemon.

Les preuves indiqueraient que cela est au moins plausible:

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

Quelque part dans les recoins profonds des petits morceaux de l'histoire ancienne d'Unix qui résonnent encore dans le fond de mon esprit derrière les toiles d'araignées, cela m'appelle comme la bonne réponse. Je pense que cela peut provenir d'une époque où les premiers mammifères parcouraient la terre avant que les dinosaures ne commencent à s'éteindre et que les pages de man étaient non seulement conservées sur le système mais également physiquement dans des racks mesurés par le pied.