.d는 디렉토리 이름에서 무엇을 의미합니까?


118

이름에 .d가있는 많은 디렉토리를 알고 있습니다.

init.d
yum.repos.d
conf.d

디렉토리를 의미합니까? 그렇다면 무엇을 명확히 하는가?

업데이트 :.d의미 에 대해 많은 흥미로운 답변을 얻었지만 내 질문의 제목이 잘 선택되지 않았습니다. 나는 "의미"를 "의견"으로 바꿨다.


9
출처에 .d대해서는 Ask Ubuntu에서이 관련 질문 에 대한 msw 의 의견을 참조하십시오 .
Gilles

@Gilles, ha, System-V보다 늦었다 고 생각했지만 그래도 '.d'에 대한 의미는 없습니다.
NJ

@Gilles : 흥미 있고, 답은 다음과 같습니다 : 설명이 사라졌습니다 ... 링크의 첫 번째 답변에 대한 첫 번째 코멘트에 따라
greg0ire

의 이유 .d는 확실하지 init.d않지만 거의 모든 사용자 정의 구성 파일이 .dRHEL / CentOS / Fedora의 디렉토리로 이동 하는 것 같습니다 .
LiuYan 刘 研

@Liu Yan-사실 일관된 것으로 해석 될 수있는 방식으로는 설명 할 수 없었습니다.
Tim Post

답변:


102

여기서 .d접미사는 디렉토리를 의미합니다. 물론 유닉스 파일 형식을 나타 내기 위해 접미사를 필요로하지 않기 때문에, 이것은 불필요 할 것입니다하지만 특정한 경우에, 뭔가 (명령 명확하게 할 필요가 있었다 /etc/init, /etc/rc0, /etc/rc1등) 그들이 (사용하는 디렉토리 /etc/init.d, /etc/rc0.d, /etc/rc1.d,를. ..)

이 규약은 최소한 Unix System V에서 도입되었지만 가능할 수도 있습니다. 이전에는 init명령이 /etc있었지만 현재는 /sbin최신 System V OS에 있습니다.

이 규칙은 단일 파일 구성 파일에서 단일 디렉토리에있는 여러 구성 파일로 이동하는 많은 응용 프로그램에서 채택되었습니다. 예를 들면 다음과 같습니다. /etc/sudoers.d

여기서 다시, 목표는 실행 파일과 구성 파일 사이가 아니라 이전의 모 놀리 식 구성 파일과 파일을 포함하는 디렉토리 사이의 이름 충돌을 피하는 것입니다.


4
+1, 나는 당신이 옳다고 생각하지만, 지금까지 아무도 그의 이론에 대한 인용을하지 않았습니다
greg0ire

그것은 종류의 실제 명시 적 표준보다 사람에 성장 대회의 더, 나는 생각
Shadur

1
옵션 (명시 적으로 지정되었거나 환경 변수의 일부 )을 사용하지 않고 ls명령 ()이 아닌 명령 을 수행 할 때 ".d"를 사용하면 디렉토리가 목록에서 두드러지게 나타납니다. 그래서 나는 항상 그것이 끝났다고 생각했습니다. ls -al--colorLS_OPTIONS
LawrenceC

^ color디렉토리를 시각적으로 표시하는 유일한 방법은 아닙니다. ls -F그렇게하고 더 유용한 것들을 많이 할 것입니다.
underscore_d

56

데비안 메일 링리스트 에서 발췌 (강조 추가) :

배포 패키징이 점점 일반화되면서 여러 독립 패키지에서 제공하는 여러 조각으로 구성 파일을 형성하는 더 나은 방법이 필요하다는 것이 분명해졌습니다. 일부 공유 서비스를 구성해야하는 각 패키지는 다른 패키지에서 사용하는 공유 구성 파일을 편집하지 않고도 구성 만 관리 할 수 ​​있어야합니다.

가장 일반적으로 채택 된 규칙은 구성 파일로 가득 찬 디렉토리를 포함시키는 것입니다. 여기서 해당 디렉토리에 놓인 것은 활성화되고 해당 구성의 일부가됩니다. 이 규칙이 널리 보급됨에 따라 일반적으로 해당 디렉토리는 대체하거나 기능을 보강 한 구성 파일의 이름을 따서 명명되었습니다. 그러나 동일한 이름을 가진 디렉토리와 파일을 가질 수 없기 때문에 구별 할 방법이 필요하므로 구성 파일 이름 끝에 .d가 추가되었습니다. 따라서 구성 파일 / etc / Muttrc는 /etc/Muttrc.d의 조각으로 기능이 보강되고 / etc / bash_completion은 /etc/bash_completion.d/* 등으로 기능이 보강되었습니다. 때때로 /etc/xinetd.conf 또는 / etc / apache2 / conf를 보완하기 위해 /etc/xinetd.d와 같은 해당 규칙에 약간의 변형이 사용됩니다. d를 /etc/apache2/apache2.conf를 보충하십시오. 그러나 같은 기본 아이디어입니다.

일반적으로 * .d 규칙을 보면 "이것은 일부 서비스의 구성으로 병합 될 여러 구성 조각이 들어있는 디렉토리"를 의미합니다.


파트 2의 경우 ".d"의 이유 는 기본 구성 파일의 일부가 아니라 여전히 구성의 일부인 것처럼 "분배"된 것 입니다.


8
놀랍게도 나는 이것이 "디렉토리"를 선호한다고 생각했을 것이다. "디렉토리의 디렉토리 부분"을 의미한다.
greg0ire

2
분명히 그렇습니다. 누군가가 이것을 읽고 왜 다른 .d의미가 나를 넘어서는 것이라고 결론 내릴 것입니다! 그러나이 소스는 유닉스 초기부터 존재했던 규칙을 사용하여 데비안의 이론적 근거를 보여줍니다. 이 데비안 관리자가 의도적으로 단순화했는지, 아니면 데비안이이 방법을 발명했다고 생각하는지 궁금합니다.
underscore_d

11

디렉토리 이름의 끝에 ".d"에 대해 말하면 이 대답 은 맞습니다. "디렉토리"에 대한 표시 일뿐입니다.

daemon 을 나타내는 "syslogd"와 같은 파일 이름과 "d"와 혼동하지 마십시오 . 백그라운드에서 실행중인 컴퓨터 프로세스

데몬의 부모 프로세스는 종종 초기화 프로세스 (PID = 1)입니다 (항상 그런 것은 아님). 프로세스는 일반적으로 하위 프로세스를 분기 한 다음 상위 프로세스를 즉시 종료하여 하위 프로세스를 채택하여 데몬이됩니다. 제어 tty에서 디먼 프로세스를 분리하는 것과 같이 다른 조작이 일반적으로 수행되므로 프로세스를 약간 단순화 한 것입니다. daemon (3)과 같은 편의 루틴이 일부 UNIX 시스템에 존재합니다.


실제로는 디렉토리 이름입니다.
Keith

@Keith : 죄송합니다. 실수 syslogd로 ".d"로 끝나는 디렉토리가 아니라 "d"로 끝나는 파일에 대해 잘못 생각했습니다 . 곧 수정하겠습니다.
Philomath

그것이 내가 생각한 것이지만, 데몬 이 아닌 프로그램의 구성 디렉토리에서 자주 사용되는 것을 봅니다 . 예를 들어 sysctl.d, modprobe.d.. 부적절한 사용입니까?
Tim Post

@Tim Post : 위의 2 개의 의견 (및 Keith의 답변)을 참조하십시오. 곧 답변을 수정하겠습니다.
Philomath

편집 됨 (15 chr)
Philomath

4

디렉토리 자체를 의미하는 것은 아니며, 기본적으로 발생하는 것은 디렉토리로 끝나는 디렉토리 .d(일반적으로 단지 디렉토리 에만 있음 /etc)가 구성 부분을 차지 한다는 것입니다.

이것은 배포판에 예를 들어 범용 기본값을 포함하도록 설계 /etc/yum.conf되었지만 사용자 또는 다른 패키지가 자신의 yum 구성을 덮어 쓰지 않는 안전한 방법으로 추가하는 쉬운 방법이 있습니다.

m의 예로써 ...

RHEL5 또는 CentOS Box에서 EPEL 사용을 시작 하려면 기본 구성을 수정하거나 파일 충돌을 일으키지 않고 /etc/yum.repos.d폴더에 새 저장소를 구성 /etc/yum.repos.d/epel.repo하거나 (예 :) 파일을 자동으로 생성하는 epel-release 패키지를 설치할 수 있습니다. 일어날 필요가 없습니다.

일어날 일은 대부분의 프로그램이 기본 구성 ( /etc/yum.conf예 : 기본 구성)을 읽은 다음 .d구성 스 니펫을 포함한 폴더를 실행중인 프로그램으로 반복하는 것 입니다.

그것이 당신을 위해 그것을 설명하기를 바랍니다.


+1, 이것은 많은 설명이지만 'd'문자의 선택은 아닙니다.
greg0ire

1
선택에 대한 설명이 있어야합니까? 그것은 시간이 지남에 따라 개발 된 협약 일뿐이며 FHS에 정의되어 있지는 않지만 LSB 표준에 포함될 수 있습니다. 내가 기억하는 것처럼 Cron은 처음이었다. (편집 : 실제로 그것은 초기화되었을 것입니다)
NJ

3

파일 .ext이 파일 형식을 지정 해야하는 것처럼 (일반적으로 "확장명"이라고 함) 디렉토리 .d는 파일이 아닌 디렉토리임을 표시 해야하는 경우가 있습니다. 그 유형입니다. 기본 ls출력은 디렉토리와 파일을 시각적으로 구분하지 않으므로 .d해당 목록에 해당 유형 (디렉토리)을 표시하는 오래된 규칙 일뿐입니다.


6
또한 .d접미사는 비슷한 이름의 파일과의 충돌을 방지합니다. 예를 들어, 구성 파일 /etc/apt/sources.list과 구성 파일 디렉토리를 가질 수 있습니다 /etc/apt/sources.list.d.
jmtd

2
^ 나는 그것이 "추가"가 아니라 처음부터 컨벤션의 이유라고 말하기까지 갔다. 유닉스 / 리눅스는 특히 초기에 사물에 대한 확장 기능을 포함시켜야한다는 점에서 결코 귀중한 적이 없었기 때문에이 이유가 정당한 이유없이 얽혀있는 것 같지는 않습니다.
underscore_d

2

보다 일반적으로, .d 디렉토리 (/etc/httpd/conf.d, /etc/rc.d, / etc /는 또 다른 예)는 포함 된 파일이 읽고 일치하는 경우 구성을 위해 자주 사용됨을 나타냅니다. 주어진 패턴이며 일부 마스터 목록에 명시 적으로 추가 할 필요가 없습니다.

따라서 * .repo 형식의 파일을 /etc/yum.repos.d에 추가하면 yum은 /etc/yum.conf 구성 목록에 파일을 추가하지 않고도 실행할 때 파일을 사용합니다. * .conf 형식의 파일을 /etc/http/conf.d에 추가하면 /etc/httpd/conf/httpd.conf에 명시 적으로 추가 할 필요없이 Apache에서 파일을 읽습니다. 마찬가지로 chkconfig는 /etc/init.d의 파일에, cron 작업은 /etc/cron.d에 있습니다.


+1이지만 ... 위와 같은 설명입니다.
greg0ire

1
@greg : 답변을 정렬하는 다양한 방법으로 인해 "위"와 "아래"는 다른 답변을 언급하는 (코멘트) 잘못된 방법입니다. '가장 오래된'및 '최신'정렬은 이러한 위치 기반 설명에 반대되는 의미를 생성하며, '투표'로 정렬 할 때 두 답변의 상대 위치가 시간이 지남에 따라 변경 될 수 있습니다.
Chris Johnsen 5

@ Chris Johnsen : 이것이 내가 깨달았지만 너무 늦었습니다. 나는 NJ의 답변에 대한 나의 의견을 언급하고있었습니다.
greg0ire

1

나는이 것을 생각하지만, 문서화 할 수 .d있는 디렉토리가와 연관되어 있음을 나타냅니다 D의 aemon.

증거는 이것이 적어도 그럴듯하다는 것을 나타냅니다.

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

거미줄 뒤의 내 마음의 뒤에서 아직도 고대 유닉스 역사의 작은 부분의 깊은 곳에서 어딘가에, 이것은 올바른 대답으로 저를 불러냅니다. 공룡이 죽기 전에 첫 포유류가 지구를 돌아 다니며 man페이지가 시스템에 보관되었을뿐만 아니라 발로 측정 된 선반에 물리적으로 보관 된 때부터 왔을 것입니다 .


마지막에 섬망에 +1하지만, 나는 이것이 yum.repos.d와 잘 맞지 않는다고 생각합니다 ...
greg0ire

</cobwebs>나는 그것의 목적이 .d디렉토리를 명확하고 유사한 이름의 파일과 명확하게하는 것임을 나타내는 대답이 올바른 것이라고 생각합니다 . 나는 E-man과 jlliagre를 옹호했습니다.
Dennis Williamson

문제는 " '.d'의 약자"이며,이 '.d'가 존재하는 이유에 대한 많은 설명을 받았지만 그 의미에 대한 답변을 한 사람은 출처를 인용하지 않았습니다. 개인적으로 나는 그것이 디렉토리를 의미한다고 생각합니다.
greg0ire

1
yum더 최근 발명입니다.
Dennis Williamson
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.