O que o .d significa nos nomes dos diretórios?

101

Eu conheço muitos diretórios com .d em seu nome:

init.d
yum.repos.d
conf.d

Isso significa diretório? Se sim, a partir do que isso se desambigua?

UPDATE: Eu tive muitas respostas interessantes sobre o que o .d significa, mas o título da minha pergunta não foi bem escolhido. Eu mudei "mean" para "stand for", espero que isso esteja mais claro agora.

    
por greg0ire 13.11.2010 / 18:11

7 respostas

88

O sufixo .d aqui significa diretório. Claro, isso seria desnecessário, pois o Unix não exige um sufixo para denotar um tipo de arquivo, mas nesse caso específico, algo era necessário para desambiguar os comandos ( /etc/init , /etc/rc0 , /etc/rc1 e assim por diante) e os diretórios que eles usam ( /etc/init.d , /etc/rc0.d , /etc/rc1.d , ...)

Esta convenção foi introduzida pelo menos com o Unix System V, mas possivelmente mais cedo. O comando init costumava estar localizado em /etc , mas geralmente está em /sbin nos sistemas operacionais System V modernos.

Observe que esta convenção foi adotada por muitos aplicativos que mudam de um único arquivo de configuração de arquivos para vários arquivos de configuração localizados em um único diretório, por exemplo: /etc/sudoers.d

Aqui, novamente, o objetivo é evitar conflitos de nomes, não entre o executável e o arquivo de configuração, mas entre o antigo arquivo de configuração monolítico e o diretório que os contém.

    
por 14.11.2010 / 12:16
50

Trecho de uma lista de discussão da Debian (grifo nosso):

When distribution packaging became more and more common, it became clear that we needed better ways of forming such configuration files out of multiple fragments, often provided by multiple independent packages. Each package that needs to configure some shared service should be able to manage only its configuration without having to edit a shared configuration file used by other packages.

The most common convention adopted was to permit including a directory full of configuration files, where anything dropped into that directory would become active and part of that configuration. As that convention became more widespread, that directory was usually named after the configuration file that it was replacing or augmenting. But since one cannot have a directory and a file with the same name, some method was required to distinguish, so .d was appended to the end of the configuration file name. Hence, a configuration file /etc/Muttrc was augmented by fragments in /etc/Muttrc.d, /etc/bash_completion was augmented with /etc/bash_completion.d/*, and so forth. Sometimes slight variations on that convention are used, such as /etc/xinetd.d to supplement /etc/xinetd.conf, or /etc/apache2/conf.d to supplement /etc/apache2/apache2.conf. But it's the same basic idea.

Generally when you see that *.d convention, it means "this is a directory holding a bunch of configuration fragments which will be merged together into configuration for some service."

Para a parte 2, a razão para o ".d", meu melhor palpite seria "distribuído", como em não faz parte do arquivo de configuração principal, mas ainda faz parte da configuração .

    
por 13.11.2010 / 21:44
12

Se você falar sobre ".d" no final dos nomes de diretório, esta resposta está certa, é apenas um marcador para" diretório ".

Apenas não confunda com "d" no e de um nome de arquivo, como "syslogd", que significa daemon . Um processo de computador em execução em segundo plano.

the parent process of a daemon is often (but not always) the init process (PID=1). Processes usually become daemons by forking a child process and then having their parent process immediately exit, thus causing init to adopt the child process. This is a somewhat simplified view of the process as other operations are generally performed, such as dissociating the daemon process from any controlling tty. Convenience routines such as daemon(3) exist in some UNIX systems for that purpose.

    
por 21.07.2011 / 07:48
4

Isso não significa diretório por si só, basicamente o que está acontecendo é que os diretórios que terminam em '.d' (note que eles geralmente só estão em / etc), pegue partes de configuração.

Isso é projetado para que as distribuições possam incluir padrões universais em, por exemplo, /etc/yum.conf, mas há um método fácil de usar para usuários ou outros pacotes anexarem suas próprias configurações do yum de uma maneira segura que não ser sobrescrito.

Como um exemplo para o yum ...

Se eu quisesse começar a usar o EPEL em meu RHEL5 ou CentOS Box, posso configurar um novo repositório na pasta /etc/yum.repos.d, (por exemplo, /etc/yum.repos.d/epel.repo) ou instale o pacote epel-release que cria o arquivo automaticamente, sem modificar minha configuração padrão ou causar conflitos de arquivo que não precisem acontecer.

O que acontecerá, é que a maioria dos programas lerá sua configuração padrão (por exemplo, /etc/yum.conf) e, em seguida, fará uma iteração em suas pastas .d, incluindo trechos de configuração no programa em execução.

Espero que isso explique para você.

    
por 13.11.2010 / 18:33
4

Assim como os arquivos podem ter .ext para especificar o tipo de arquivo (geralmente chamado de "extensão"), os diretórios às vezes têm .d para mostrar que é um diretório e não um arquivo. Esse é o seu tipo. A saída ls padrão não diferencia visualmente os diretórios e arquivos, portanto, o .d é apenas uma convenção antiga para mostrar seu tipo (diretório) nessas listagens.

    
por 21.07.2011 / 08:06
2

Mais geralmente, os diretórios .d (/etc/httpd/conf.d, /etc/rc.d, / etc / sendo outro exemplo), indicam que os arquivos contidos serão lidos e usados, geralmente para configuração, se eles corresponderem a um determinado padrão e não precisarem ser explicitamente adicionados a alguma lista principal.

Portanto, se você adicionar arquivos do formato * .repo ao /etc/yum.repos.d, o yum o usará ao executar sem precisar adicioná-lo a uma lista de configurações /etc/yum.conf. Se você adicionar arquivos do formato * .conf ao /etc/http/conf.d, eles serão lidos pelo Apache sem precisar ser explicitamente adicionado ao /etc/httpd/conf/httpd.conf. Da mesma forma, chkconfig para arquivos em /etc/init.d, tarefas agendadas em /etc/cron.d.

    
por 13.11.2010 / 18:39
1

Eu acho, mas não posso documentar, que .d indica que o diretório está associado a um aemon d .

Evidências indicam que isso é pelo menos plausível:

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

Em algum lugar nos profundos recessos dos pequenos pedaços da antiga história do Unix ainda circulando no fundo da minha mente por trás das teias de aranha, isso me chama de resposta correta. Acredito que possa ter vindo de uma época em que os primeiros mamíferos vagaram pela Terra antes que os dinossauros começassem a se extinguir e que% das páginas não fossem mantidas apenas no sistema, mas também fisicamente nas prateleiras medidas pelo pé.

    
por 13.11.2010 / 21:33

Tags