Các .d là viết tắt của tên thư mục là gì?


118

Tôi biết nhiều thư mục với .d trong tên của họ:

init.d
yum.repos.d
conf.d

Nó có nghĩa là thư mục? Nếu có, điều này làm gì định hướng?

CẬP NHẬT: Tôi đã có nhiều câu trả lời thú vị về ý .dnghĩa của nó, nhưng tiêu đề câu hỏi của tôi không được chọn tốt. Tôi đã thay đổi "có nghĩa" thành "đứng cho".


9
Để biết nguồn gốc của .d, hãy xem bình luận của msw về câu hỏi liên quan này tại Hỏi Ubuntu .
Gilles

@Gilles, ha, tôi đã nghĩ nó muộn hơn System-V, nhưng vâng, thậm chí vẫn không có ý nghĩa gì với '.d' nó chỉ được chọn từ những gì tôi có thể nói.
NJ

@Gilles: thú vị, câu trả lời dường như là: lời giải thích đã bị mất ... theo nhận xét đầu tiên của câu trả lời đầu tiên trong liên kết của bạn
greg0ire

Bạn không chắc chắn lý do tại sao .dtrong init.d, nhưng nó dường như hầu hết các tập tin cấu hình tùy chỉnh đi đến .dthư mục trong RHEL / CentOS / Fedora.
LiuYan 刘

@Liu Yan - Thật vậy, tôi không thể giải thích nó theo bất kỳ cách nào có thể được hiểu là nhất quán.
Tim Post

Câu trả lời:


102

Các .dhậu tố ở đây có nghĩa thư mục. Tất nhiên, đây sẽ là không cần thiết như Unix không đòi hỏi một hậu tố để biểu thị một loại tập tin nhưng trong trường hợp cụ thể, có điều gì đó cần thiết để disambiguate các lệnh ( /etc/init, /etc/rc0, /etc/rc1và vân vân) và các thư mục họ sử dụng ( /etc/init.d, /etc/rc0.d, /etc/rc1.d,. ..)

Quy ước này được giới thiệu ít nhất với Unix System V nhưng có thể sớm hơn. Các initlệnh thường được đặt tại /etcnhưng nói chung là bây giờ trong /sbintrên hệ điều hành System V hiện đại.

Lưu ý rằng quy ước này đã được thông qua bởi nhiều ứng dụng chuyển từ một tệp cấu hình tệp đơn sang nhiều tệp cấu hình nằm trong một thư mục, ví dụ: /etc/sudoers.d

Ở đây một lần nữa, mục tiêu là để tránh xung đột tên, không phải giữa tệp thực thi và tệp cấu hình mà là giữa tệp cấu hình nguyên khối trước đây và thư mục chứa chúng.


4
+1, tôi nghĩ bạn đúng, nhưng cho đến nay vẫn chưa có ai đưa ra bất kỳ trích dẫn nào cho lý thuyết của mình
greg0ire

Đó là một quy ước mà loại người phát triển hơn là một tiêu chuẩn rõ ràng thực sự, tôi nghĩ
Shadur

1
Khi bạn thực hiện một lslệnh (không ls -al) mà không sử dụng --colortùy chọn (được chỉ định rõ ràng hoặc một phần của LS_OPTIONSbiến môi trường), việc có ".d" làm cho các thư mục nổi bật khỏi danh sách. Đó là lý do tại sao tôi luôn nghĩ rằng nó đã được thực hiện.
LawrenceC

^ colorkhông phải là cách duy nhất, hoặc tốt nhất, để đánh dấu các thư mục trực quan. ls -Fsẽ làm điều đó và nhiều điều hữu ích hơn.
gạch dưới

56

Trích từ danh sách gửi thư Debian (nhấn mạnh thêm):

Khi bao bì phân phối ngày càng trở nên phổ biến, rõ ràng là chúng ta cần những cách tốt hơn để hình thành các tệp cấu hình như vậy từ nhiều mảnh, thường được cung cấp bởi nhiều gói độc lập. Mỗi gói cần cấu hình một số dịch vụ chia sẻ sẽ chỉ có thể quản lý cấu hình của nó mà không phải chỉnh sửa tệp cấu hình dùng chung được sử dụng bởi các gói khác.

Quy ước phổ biến nhất được thông qua là cho phép bao gồm một thư mục chứa đầy các tệp cấu hình, trong đó mọi thứ được thả vào thư mục đó sẽ trở thành hoạt động và là một phần của cấu hình đó. Khi quy ước đó trở nên phổ biến hơn, thư mục đó thường được đặt tên theo tệp cấu hình mà nó đang thay thế hoặc tăng thêm. Nhưng vì người ta không thể có một thư mục và một tệp có cùng tên, nên một số phương pháp được yêu cầu để phân biệt, vì vậy .d đã được thêm vào cuối tên tệp cấu hình. Do đó, tệp cấu hình / etc / Muttrc đã được tăng cường bởi các đoạn trong /etc/Muttrc.d, / etc / bash_completion đã được tăng cường bằng /etc/bash_completion.d/*, v.v. Đôi khi các biến thể nhỏ trên quy ước đó được sử dụng, chẳng hạn như /etc/xinetd.d để bổ sung /etc/xinetd.conf hoặc / etc / apache2 / conf. d để bổ sung /etc/apache2/apache2.conf. Nhưng đó là cùng một ý tưởng cơ bản.

Nói chung khi bạn thấy quy ước * .d đó, có nghĩa là "đây là một thư mục chứa một loạt các đoạn cấu hình sẽ được hợp nhất với nhau thành cấu hình cho một số dịch vụ."


Đối với phần 2, lý do cho ".d", dự đoán tốt nhất của tôi sẽ là "phân phối", vì không phải là một phần của tệp cấu hình chính, nhưng vẫn là một phần của cấu hình .


8
Đáng ngạc nhiên ... Tôi có thể nghĩ rằng điều này đã nói ủng hộ "thư mục", có nghĩa là "đây là phần thư mục của cấu hình".
greg0ire

2
Nó rõ ràng làm. Tại sao ai đó sẽ đọc điều này và kết luận rằng .dbất cứ điều gì khác có nghĩa là ngoài tôi! Nhưng nguồn này chỉ cho thấy lý do của Debian trong, trong một bối cảnh, sử dụng một quy ước tồn tại từ những ngày đầu của Unix. Tôi phải tự hỏi liệu người bảo trì Debian này đã cố tình đơn giản hóa - hay thực sự nghĩ rằng Debian đã phát minh ra cách làm này.
gạch dưới

11

Nếu bạn nói về ".d" ở cuối tên thư mục, câu trả lời này là đúng, đó chỉ là một điểm đánh dấu cho "thư mục".

Đừng nhầm lẫn nó với "d" tại và tên tệp, như "syslogd", viết tắt của daemon . Một quá trình máy tính chạy trong nền.

tiến trình cha của một daemon thường (nhưng không phải luôn luôn) quá trình init (PID = 1). Các quy trình thường trở thành trình nền bằng cách hủy bỏ một quy trình con và sau đó quy trình cha mẹ của chúng ngay lập tức thoát ra, do đó khiến init chấp nhận quy trình con. Đây là một cái nhìn hơi đơn giản về quy trình vì các hoạt động khác thường được thực hiện, chẳng hạn như phân tách quá trình daemon khỏi bất kỳ tty kiểm soát nào. Các thói quen tiện lợi như daemon (3) tồn tại trong một số hệ thống UNIX cho mục đích đó.


Không thực sự, đây là tên thư mục.
Keith

@Keith: Rất tiếc, tôi đã nhầm tưởng anh ấy nói về các tập tin kết thúc bằng "d", giống như syslogd, không phải các thư mục kết thúc bằng ".d". Tôi sẽ sớm chỉnh sửa.
Philomath

Đó là những gì tôi nghĩ, nhưng tôi thấy nó được sử dụng thường xuyên trong các thư mục cấu hình cho các chương trình không trình bày , ví dụ sysctl.d, modprobe.d.. đó có phải là cách sử dụng không phù hợp không?
Tim Post

@Tim Đăng: xem 2 bình luận ở trên (và câu trả lời của Keith), tôi sẽ sớm chỉnh sửa câu trả lời của mình.
Philomath

Đã chỉnh sửa (15 chr)
Philomath

4

Nó không có nghĩa là thư mục mỗi se, về cơ bản những gì đang xảy ra là các thư mục kết thúc .d(lưu ý những thứ này thường chỉ có trong /etc), lấy các phần cấu hình.

Ví dụ /etc/yum.conf, điều này được thiết kế để các bản phân phối có thể bao gồm các mặc định phổ quát , nhưng sau đó, có một phương pháp dễ sử dụng cho người dùng hoặc các gói khác để nối các cấu hình yum của riêng họ theo cách an toàn sẽ không bị ghi đè.

Để làm ví dụ cho ...

Nếu tôi muốn bắt đầu sử dụng EPEL trên Hộp RHEL5 hoặc CentOS của mình, tôi có thể định cấu hình kho lưu trữ mới trong /etc/yum.repos.dthư mục, (nói /etc/yum.repos.d/epel.repo) hoặc cài đặt gói phát hành epel tạo tệp tự động, mà không sửa đổi cấu hình mặc định của tôi hoặc gây xung đột tệp. không cần phải xảy ra

Điều gì sẽ xảy ra, hầu hết các chương trình sẽ đọc cấu hình mặc định của chúng ( /etc/yum.confví dụ) và sau đó lặp qua các .dthư mục của chúng bao gồm các đoạn cấu hình vào chương trình đang chạy.

Hy vọng nó giải thích nó cho bạn.


+1, điều này giải thích rất nhiều, nhưng ... không phải là sự lựa chọn của chữ 'd'.
greg0ire

1
Có phải có một lời giải thích cho sự lựa chọn? Nó chỉ là một quy ước đã được phát triển theo thời gian, nó không (từ một cái nhìn nhanh) được định nghĩa trong FHS, nhưng nó có thể được bao gồm trong tiêu chuẩn LSB. Cron là một trong những người đầu tiên khi tôi nhớ lại. (Chỉnh sửa: thực tế nó đã được khởi tạo)
NJ

3

Giống như các tệp có thể phải .extchỉ định loại tệp đó (thường được gọi là "phần mở rộng"), các thư mục đôi khi phải .dhiển thị đó là thư mục chứ không phải tệp. Đó là kiểu của nó. Đầu lsra mặc định không phân biệt trực quan các thư mục và tệp, do đó, .dđây chỉ là một quy ước cũ để hiển thị loại (thư mục) trong các danh sách đó.


6
Ngoài ra, .dhậu tố ngăn ngừa va chạm với một tệp có tên tương tự. Ví dụ: bạn có thể có tệp cấu hình /etc/apt/sources.listvà thư mục tệp cấu hình /etc/apt/sources.list.d.
jmtd

2
^ Tôi sẽ đi xa hơn để nói rằng đó không phải là một "bổ sung" mà là lý do cho hội nghị ở nơi đầu tiên. Unix / Linux chưa bao giờ là quý giá khi phải bao gồm các tiện ích mở rộng cho mọi thứ, đặc biệt là trong những ngày đầu, vì vậy tôi nghi ngờ cái này đã bị băng bó xung quanh mà không có lý do chính đáng.
gạch dưới

2

Tổng quát hơn, các thư mục .d (/etc/httpd/conf.d, /etc/rc.d, / etc / là một ví dụ khác), chỉ ra rằng các tệp chứa trong đó sẽ được đọc và sử dụng, thường là cho cấu hình, nếu chúng khớp một mẫu nhất định và không yêu cầu được thêm rõ ràng vào một số danh sách chính.

Vì vậy, nếu bạn thêm các tệp có dạng * .repo vào /etc/yum.repos.d, yum sẽ sử dụng nó khi chạy mà không cần thêm nó vào danh sách cấu hình /etc/yum.conf. Nếu bạn thêm các tệp có dạng * .conf vào /etc/http/conf.d, chúng sẽ được đọc bởi Apache mà không cần phải được thêm rõ ràng vào /etc/httpd/conf/httpd.conf. Tương tự, chkconfig tới các tệp trong /etc/init.d, các công việc cron trong /etc/cron.d.


+1, nhưng ... nhận xét tương tự như trên.
greg0ire

1
@greg: Do có nhiều cách sắp xếp câu trả lời, nên ở trên phạm vi và trên dưới đây là những cách kém để tham khảo (nhận xét về) các câu trả lời khác. Các loại 'cũ nhất' và 'mới nhất' tạo ra ý nghĩa trái ngược cho các mô tả dựa trên vị trí như vậy và khi sắp xếp theo 'phiếu', vị trí tương đối của hai câu trả lời có thể thay đổi theo thời gian.
Chris Johnsen

@Chris Johnsen: đây là những gì tôi nhận ra, nhưng quá muộn. Tôi đã đề cập đến nhận xét của tôi về câu trả lời của NJ.
greg0ire

1

Tôi nghĩ, nhưng không thể ghi lại, rằng .dchỉ ra rằng thư mục được liên kết với một d aemon.

Bằng chứng sẽ chỉ ra rằng điều này ít nhất là hợp lý:

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

Đâu đó trong sự suy thoái sâu sắc của những mảnh nhỏ của lịch sử Unix cổ xưa vẫn còn ầm ầm trong tâm trí tôi đằng sau mạng nhện, đây gọi tôi là câu trả lời chính xác. Tôi tin rằng nó có thể đến từ thời điểm những động vật có vú đầu tiên lang thang trên trái đất trước khi khủng long bắt đầu chết và mancác trang không chỉ được giữ trên hệ thống mà còn cả trong các giá đỡ được đo bằng chân.


+1 cho mê sảng ở cuối, nhưng tôi nghĩ rằng điều này không phù hợp với yum.repose.d ...
greg0ire

</cobwebs>Tôi tin rằng các câu trả lời chỉ ra rằng mục đích của việc .dnày là để phân tán thư mục khỏi các tệp có liên quan và có tên tương tự là những tệp chính xác. Tôi đã nâng cấp E-man's và jlliagre.
Dennis Williamson

Câu hỏi là "'.d' nghĩa là gì" và tôi đã nhận được rất nhiều lời giải thích liên quan đến lý do tại sao lại có '.d' này, nhưng một số ít đưa ra câu trả lời liên quan đến ý nghĩa không trích dẫn bất kỳ nguồn nào. Personnaly, tôi nghĩ nó có nghĩa là thư mục.
greg0ire

1
yumlà một phát minh gần đây hơn.
Dennis Williamson
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.