Bisakah saya memiliki pengaturan tertentu yang universal untuk semua pengguna saya?
Bisakah saya memiliki pengaturan tertentu yang universal untuk semua pengguna saya?
Jawaban:
Seperti /etc/profileyang disebutkan orang lain, beberapa sistem Linux sekarang menggunakan direktori /etc/profile.d/; setiap .shfile di sana akan bersumber oleh /etc/profile. Ini sedikit lebih rapi untuk menyimpan hal-hal lingkungan kustom Anda dalam file ini daripada hanya mengedit /etc/profile.
Jika LinuxOS Anda memiliki file ini:
/etc/environment
Anda dapat menggunakannya untuk menetapkan variabel lingkungan secara permanen untuk semua pengguna.
Diambil dari: http://www.sysadmit.com/2016/04/linux-variables-de-entorno-permanentes.html
Jika semua layanan login menggunakan PAM , dan semua layanan login memiliki file konfigurasi session required pam_env.somasing-masing /etc/pam.d/*, maka semua sesi login akan memiliki beberapa variabel lingkungan yang ditetapkan sebagaimana ditentukan dalampam_env file konfigurasi.
Pada sebagian besar distribusi Linux modern, ini semua ada di sana secara default - cukup tambahkan variabel lingkungan global yang Anda inginkan /etc/security/pam_env.conf.
Ini berfungsi terlepas dari shell pengguna, dan juga berfungsi untuk login grafis (jika xdm / kdm / gdm / entrance / ... diatur seperti ini).
echo foo>/home/me/bardan reboot (dan login lagi), file itu tidak dapat dibuat. (Mungkin ada cara yang lebih elegan untuk menguji ini, tetapi saya ingin memastikan sebelum berkomentar di sini.)
Hebatnya, Unix dan Linux sebenarnya tidak memiliki tempat untuk mengatur variabel lingkungan global. Yang terbaik yang dapat Anda lakukan adalah mengatur agar shell tertentu memiliki inisialisasi khusus situs.
Jika Anda memasukkannya /etc/profile, itu akan menangani hal-hal untuk sebagian besar pengguna shell yang kompatibel dengan posix. Ini mungkin "cukup baik" untuk tujuan yang tidak kritis.
Tetapi siapa pun yang memiliki cshatau tcshshell tidak akan melihatnya, dan saya tidak percaya cshmemiliki file inisialisasi global.
/etc/environmentsebenarnya tampaknya mengatur variabel lingkungan untuk saya, bahkan sebagai pengguna root. Saya tahu itu /etc/environmentada di amazon linux dan ubuntu. Saya tidak dapat memeriksa apakah berfungsi untuk csh, tcsh, atau zsh.
Beberapa kutipan menarik dari bash manpage:
Ketika bash dipanggil sebagai shell login interaktif, atau sebagai shell non-interaktif dengan
--loginopsi, bash pertama kali membaca dan mengeksekusi perintah dari file/etc/profile, jika file itu ada. Setelah membaca file itu, ia mencari~/.bash_profile,~/.bash_logindan~/.profile, agar, dan membaca dan mengeksekusi perintah dari yang pertama yang ada dan dapat dibaca. The--noprofilepilihan mungkin digunakan ketika shell dimulai untuk menghambat perilaku ini.
...
Ketika shell interaktif yang bukan shell login dimulai, bash membaca dan mengeksekusi perintah dari/etc/bash.bashrcdan~/.bashrc, jika file-file ini ada. Ini mungkin terhambat dengan menggunakan--norcopsi. Itu--rcfileopsi file akan memaksa bash untuk membaca dan menjalankan perintah dari file alih-alih/etc/bash.bashrcdan~/.bashrc.
Jadi lihat /etc/profileatau /etc/bash.bashrc, file-file ini adalah tempat yang tepat untuk pengaturan global. Letakkan sesuatu seperti ini di dalamnya untuk mengatur variabel lingkungan:
export MY_VAR=xxx
Menggunakan PAM sangat baik.
# modify the display PAM
$ cat /etc/security/pam_env.conf
# BEFORE: $ export DISPLAY=:0.0 && python /var/tmp/myproject/click.py &
# AFTER : $ python $abc/click.py &
DISPLAY DEFAULT=${REMOTEHOST}:0.0 OVERRIDE=${DISPLAY}
abc DEFAULT=/var/tmp/myproject
Setiap proses yang berjalan di bawah kernel Linux menerima lingkungannya sendiri dan unik yang diwarisi dari induknya. Dalam hal ini, induknya bisa berupa shell itu sendiri (menelurkan sub shell), atau program 'login' (pada sistem tipikal).
Karena setiap lingkungan proses dilindungi, tidak ada cara untuk 'menyuntikkan' variabel lingkungan ke setiap proses yang berjalan, jadi bahkan jika Anda memodifikasi shell .rc / profil default, itu tidak akan berlaku sampai setiap proses keluar dan memuat ulang pengaturan memulai.
Lihat di / etc / untuk memodifikasi variabel start up default untuk shell tertentu. Sadarilah bahwa pengguna dapat (dan sering melakukan) mengubahnya dalam pengaturan masing-masing.
Unix dirancang untuk mematuhi pengguna, dalam batas-batas tertentu.
NB : Bash bukan satu - satunya shell di sistem Anda. Perhatikan baik-baik apa yang sebenarnya ditunjukkan oleh tautan simbol / bin / sh. Pada banyak sistem, ini sebenarnya bisa berupa tanda hubung yang (secara default, tanpa permintaan khusus) secara POSIXLY benar. Oleh karena itu, Anda harus berhati-hati untuk memodifikasi kedua default, atau skrip yang dimulai dengan / bin / sh tidak akan mewarisi default global Anda. Demikian pula, berhati-hatilah untuk menghindari sintaks yang hanya dimengerti bash saat mengedit keduanya, alias avoiding bashisms.