Apa singkatan dari .d dalam nama direktori?

118

Saya tahu banyak direktori dengan .d dalam nama mereka:

init.d
yum.repos.d
conf.d

Apakah ini berarti direktori? Jika ya, dari apa ini ambigu?

UPDATE: Saya punya banyak jawaban menarik tentang apa .dartinya, tetapi judul pertanyaan saya tidak dipilih dengan baik. Saya mengubah "berarti" menjadi "berdiri untuk".

greg0ire
sumber
9
Untuk asal usulnya .d, lihat komentar msw tentang pertanyaan terkait ini di Ask Ubuntu .
Gilles
@Gilles, ha, aku berpikir itu lebih lambat dari System-V, tapi ya, bahkan masih tidak ada artinya untuk '.d' itu hanya dipilih dari apa yang bisa kukatakan.
NJ
@Gilles: menarik, jawabannya sepertinya: penjelasannya hilang ... sesuai dengan komentar pertama dari jawaban pertama di tautan Anda
greg0ire
Tidak yakin mengapa .dmasuk init.d, tetapi tampaknya hampir semua file konfigurasi khusus masuk ke .ddirektori di RHEL / CentOS / Fedora.
LiuYan 刘 研
@Liu Yan - Memang, saya tidak bisa menjelaskannya dengan cara apa pun yang bisa dianggap konsisten.
Tim Post

Jawaban:

102

The .dakhiran sini berarti direktori. Tentu saja, ini tidak perlu dilakukan karena Unix tidak memerlukan akhiran untuk menunjukkan jenis file tapi dalam kasus tertentu, ada sesuatu yang diperlukan untuk disambiguate perintah ( /etc/init, /etc/rc0, /etc/rc1dan sebagainya) dan direktori yang mereka gunakan ( /etc/init.d, /etc/rc0.d, /etc/rc1.d,. ..)

Konvensi ini diperkenalkan setidaknya dengan Unix System V tetapi mungkin sebelumnya. The initPerintah yang digunakan untuk berada di /etctetapi pada umumnya sekarang di /sbinatas OS System V modern.

Perhatikan bahwa konvensi ini telah diadopsi oleh banyak aplikasi yang bergerak dari satu file konfigurasi file ke beberapa file konfigurasi yang terletak di satu direktori, misalnya: /etc/sudoers.d

Di sini sekali lagi, tujuannya adalah untuk menghindari perselisihan nama, bukan antara file yang dapat dieksekusi dan konfigurasi tetapi antara file konfigurasi monolitik sebelumnya dan direktori yang berisi mereka.

Jlliagre
sumber
4
+1, saya pikir Anda benar, tetapi sejauh ini belum ada yang memberikan penawaran untuk teorinya
greg0ire
Ini lebih seperti sebuah konvensi yang tumbuh pada orang-orang daripada standar eksplisit yang sebenarnya, saya pikir
Shadur
1
Ketika Anda melakukan lsperintah (bukan ls -al) tanpa menggunakan --coloropsi (baik ditentukan secara eksplisit atau bagian dari LS_OPTIONSvariabel lingkungan), memiliki ".d" membuat direktori menonjol dari daftar. Itu sebabnya saya selalu berpikir itu dilakukan.
LawrenceC
^ colorbukan satu-satunya, atau cara terbaik, untuk menandai direktori secara visual. ls -Fakan melakukan itu dan banyak hal berguna lainnya.
underscore_d
56

Kutipan dari milis Debian (penekanan ditambahkan):

Ketika kemasan distribusi menjadi semakin umum, menjadi jelas bahwa kami membutuhkan cara yang lebih baik untuk membentuk file konfigurasi seperti itu dari beberapa fragmen, sering kali disediakan oleh beberapa paket independen. Setiap paket yang perlu mengkonfigurasi beberapa layanan bersama harus dapat mengelola hanya konfigurasinya tanpa harus mengedit file konfigurasi bersama yang digunakan oleh paket lain.

Konvensi yang paling umum diadopsi adalah untuk mengizinkan termasuk direktori yang penuh dengan file konfigurasi, di mana apa pun yang masuk ke direktori itu akan menjadi aktif dan bagian dari konfigurasi itu. Ketika konvensi itu menjadi lebih luas, direktori itu biasanya dinamai sesuai dengan file konfigurasi yang diganti atau diperbesar. Tetapi karena seseorang tidak dapat memiliki direktori dan file dengan nama yang sama, beberapa metode diperlukan untuk membedakan, jadi .d ditambahkan ke akhir nama file konfigurasi. Oleh karena itu, file konfigurasi / etc / Muttrc ditambah oleh fragmen di /etc/Muttrc.d, / etc / bash_completion ditambah dengan /etc/bash_completion.d/*, dan sebagainya. Terkadang sedikit variasi pada konvensi yang digunakan, seperti /etc/xinetd.d untuk menambah /etc/xinetd.conf, atau / etc / apache2 / conf. d untuk menambah /etc/apache2/apache2.conf. Tapi itu ide dasar yang sama.

Secara umum ketika Anda melihat bahwa konvensi * .d, itu berarti "ini adalah direktori yang menyimpan sekelompok fragmen konfigurasi yang akan digabung bersama menjadi konfigurasi untuk beberapa layanan."


Untuk bagian 2, alasan untuk ".d", tebakan terbaik saya akan "didistribusikan", karena bukan bagian dari file konfigurasi utama, tetapi masih bagian dari konfigurasi .

E-man
sumber
8
Mengejutkan ... Saya akan berpikir ini berbicara mendukung "direktori", yang berarti "ini adalah bagian direktori dari konfigurasi".
greg0ire
2
Jelas itu. Mengapa seseorang membaca ini dan menyimpulkan bahwa yang .ddimaksud selain saya! Tetapi sumber ini hanya menunjukkan alasan Debian untuk, dalam satu konteks, menggunakan konvensi yang ada sejak awal Unix. Saya harus bertanya-tanya apakah pemelihara Debian ini sengaja menyederhanakan - atau benar-benar berpikir Debian menemukan praktik ini.
underscore_d
11

Jika Anda berbicara tentang ".d" di akhir nama direktori, jawaban ini benar, itu hanya penanda untuk "direktori".

Hanya saja jangan bingung dengan "d" di dan dari nama file, seperti "syslogd", yang merupakan singkatan dari daemon . Proses komputer berjalan di latar belakang.

proses induk daemon sering (tetapi tidak selalu) proses init (PID = 1). Proses biasanya menjadi daemon dengan mengolah proses anak dan kemudian proses orang tua mereka segera keluar, sehingga menyebabkan init untuk mengadopsi proses anak. Ini adalah pandangan yang agak disederhanakan dari proses karena operasi lain umumnya dilakukan, seperti memisahkan proses daemon dari sembarang pengendali tty. Rutinitas kenyamanan seperti daemon (3) ada di beberapa sistem UNIX untuk tujuan itu.

Philomath
sumber
Tidak juga, ini adalah nama direktori.
Keith
@Keith: oops, saya keliru mengira dia berbicara tentang file yang diakhiri dengan "d", seperti syslogd, bukan direktori yang diakhiri dengan ".d". Saya akan segera mengedit.
Philomath
Itulah yang saya pikir, tapi saya lihat sering digunakan dalam direktori konfigurasi untuk program-program yang tidak daemonize, misalnya sysctl.d, modprobe.d.. akan yang menjadi penggunaan yang tidak?
Tim Post
@Tim Post: lihat 2 komentar di atas (dan jawaban Keith), saya akan segera mengedit jawaban saya.
Philomath
Diedit (15 chr)
Philomath
4

Itu tidak berarti direktori per se, pada dasarnya yang terjadi adalah direktori yang berakhir .d(perhatikan ini biasanya hanya pernah ada /etc), ambil bagian konfigurasi.

Ini dirancang agar distro dapat menyertakan standar universal /etc/yum.conf, misalnya , tetapi kemudian ada metode yang mudah digunakan untuk pengguna atau paket lain untuk menambahkan konfigurasi yum mereka sendiri dengan cara yang aman yang tidak akan ditimpa.

Sebagai contoh untuk yum ...

Jika saya ingin mulai menggunakan EPEL pada RHEL5 atau CentOS Box saya, saya dapat mengonfigurasi repositori baru di /etc/yum.repos.dfolder, (misalnya /etc/yum.repos.d/epel.repo) atau menginstal paket rilis-epel yang membuat file secara otomatis, tanpa mengubah konfigurasi default saya atau menyebabkan konflik file yang tidak perlu terjadi.

Apa yang akan terjadi, adalah sebagian besar program akan membaca konfigurasi default mereka ( /etc/yum.confmisalnya) dan kemudian beralih ke .dfolder mereka termasuk potongan konfigurasi ke dalam program yang sedang berjalan.

Semoga ini menjelaskannya untuk Anda.

NJ
sumber
+1, ini banyak menjelaskan, tapi ... bukan pilihan huruf 'd'.
greg0ire
1
Apakah harus ada penjelasan untuk pilihan itu? Ini hanya sebuah konvensi yang telah berkembang dari waktu ke waktu, ini bukan (dari pandangan cepat) yang didefinisikan dalam FHS, tetapi mungkin termasuk dalam standar LSB. Cron adalah salah satu yang pertama yang saya ingat. (Sunting: pada kenyataannya itu akan init)
NJ
3

Sama seperti file yang harus .extmenentukan jenis file itu (biasanya disebut "ekstensi"), direktori terkadang harus .dmenunjukkan itu direktori dan bukan file. Itu tipenya. lsOutput default tidak secara visual membedakan direktori dan file, jadi .dini hanyalah konvensi lama untuk menunjukkan tipenya (direktori) dalam daftar tersebut.

Keith
sumber
6
Selain itu, .dsufiks mencegah tabrakan dengan file dengan nama yang sama. Misalnya, Anda dapat memiliki file konfigurasi /etc/apt/sources.list, dan direktori file konfigurasi /etc/apt/sources.list.d.
jmtd
2
^ Saya akan mengatakan lebih jauh bahwa itu bukan "tambahan" tetapi alasan utama dari kebaktian itu. Unix / Linux tidak pernah berharga tentang harus memasukkan ekstensi pada hal-hal, terutama di masa-masa awal, jadi saya ragu yang satu ini diikat tanpa alasan yang baik.
underscore_d
2

Secara umum, direktori .d (/etc/httpd/conf.d, /etc/rc.d, / etc / menjadi contoh lain), menunjukkan bahwa file yang terkandung akan dibaca dan digunakan, seringkali untuk konfigurasi, jika sesuai pola yang diberikan dan tidak perlu ditambahkan secara eksplisit ke beberapa daftar induk.

Jadi, jika Anda menambahkan file dari bentuk * .repo ke /etc/yum.repos.d, yum akan menggunakannya saat berjalan tanpa perlu menambahkannya ke daftar konfigurasi /etc/yum.conf. Jika Anda menambahkan file dari bentuk * .conf ke /etc/http/conf.d, mereka akan dibaca oleh Apache tanpa perlu ditambahkan secara eksplisit ke /etc/httpd/conf/httpd.conf. Demikian pula, chkconfig ke file di /etc/init.d, tugas cron di /etc/cron.d.

Tim
sumber
+1, tapi ... komentar yang sama seperti di atas.
greg0ire
1
@reg: Karena beragam cara untuk mengurutkan jawaban, "di atas" dan "di bawah" adalah cara yang buruk untuk merujuk (komentar pada) jawaban lain. Jenis 'tertua' dan 'terbaru' menghasilkan makna yang berlawanan untuk deskripsi berbasis posisi seperti itu, dan ketika mengurutkan berdasarkan 'suara' posisi relatif dari dua jawaban dapat berubah seiring waktu.
Chris Johnsen
@ Chris Johnsen: ini yang saya sadari, tetapi sudah terlambat. Saya merujuk komentar saya pada jawaban NJ.
greg0ire
1

Saya pikir, tetapi tidak dapat mendokumentasikan, bahwa .dmenunjukkan bahwa direktori dikaitkan dengan d aemon.

Bukti akan menunjukkan bahwa ini setidaknya masuk akal:

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

Di suatu tempat di ceruk yang dalam dari potongan-potongan kecil sejarah Unix kuno masih berputar-putar di belakang pikiran saya di belakang sarang laba-laba, ini memanggil saya sebagai jawaban yang benar. Saya percaya itu mungkin berasal dari masa ketika mamalia pertama berkeliaran di bumi sebelum dinosaurus mulai mati dan manhalaman tidak hanya disimpan pada sistem tetapi juga secara fisik di rak yang diukur dengan kaki.

Dennis Williamson
sumber
+1 untuk delirium pada akhirnya, tapi saya pikir ini tidak cocok dengan yum.repos.d ...
greg0ire
</cobwebs>Saya percaya jawaban yang menunjukkan bahwa tujuan dari .dini adalah untuk mendisambiguasikan direktori dari file yang terkait dan bernama yang sama adalah yang benar. Saya telah membatalkan E-man dan jlliagre.
Dennis Williamson
Pertanyaannya adalah "apa arti '.d' berarti", dan saya telah menerima banyak penjelasan mengenai alasan mengapa ada '.d' ini, tetapi beberapa yang memberikan jawaban mengenai arti tidak mengutip sumber apa pun. Personnaly, saya pikir itu berarti direktori.
greg0ire
1
yumadalah penemuan yang lebih baru.
Dennis Williamson