Apa perbedaan antara / etc / environment dan / etc / profile?

25

Saya mengerti bahwa yang pertama dimuat sebelum yang terakhir, tetapi apa perbedaan konseptual? Apakah ada alasan bagus mengapa saya harus menetapkan beberapa variabel dalam satu dan tidak dalam yang lain? Kecuali fakta yang /etc/environmenttampaknya ada untuk mengatur lingkungan untuk semua proses yang dijalankan oleh sistem, sedangkan /etc/profileuntuk pengaturan lingkungan yang digunakan dan diperbanyak dari shell login, benar?

Juga, di samping catatan, program mana yang secara tradisional dibaca /etc/environment? Apakah ini terkait dengan POSIX, atau hanya sebuah konvensi?

amn
sumber

Jawaban:

11

Ekstrak dari bantuan Ubuntu

/etc/environment- File ini secara khusus dimaksudkan untuk pengaturan variabel lingkungan sistem-lebar. Ini bukan file skrip, melainkan terdiri dari ekspresi penugasan, satu per baris. Secara khusus, file ini menyimpan pengaturan lokal dan path seluruh sistem.

/etc/profile - File ini dijalankan setiap kali shell login bash dimasukkan (misalnya saat masuk dari konsol atau lebih dari ssh), serta oleh DisplayManager ketika sesi desktop dimuat.

Saya pikir semua ini hanya sebuah konvensi tetapi tidak jauh dari standar (saya tidak tahu tentang sistem seperti RedHat).

Mali
sumber
Ini bekerja pada RedHat (pada 7.6). '/ Etc / environment' is kosong adalah server saya dan pengaturan VAR=valuemulai berlaku di shell (setelah login ulang).
DKroot
39

/etc/environmentbukan bagian dari POSIX, itu milik PAM (Modul Otentikasi Pluggable), dan hanya program yang dikompilasi dengan dukungan PAM yang dapat menggunakannya (terutama sistem masuk, yang kemudian memulai shell atau lingkungan pengguna). Ini berarti bahkan tidak dibaca oleh shell Anda.

Anda dapat melihat program menggunakan /etc/environmentdengan grep -l pam_env /etc/pam.d/*.

Jadi /etc/environmentdigunakan untuk mengatur variabel untuk program yang biasanya tidak dimulai dari shell.

Neula
sumber