Jawaban atas pertanyaan pada SO dan askubuntu , bersama dengan menusuk (dan membaca header) $HOME
dan /etc/
, menunjukkan sejumlah file yang dapat digunakan untuk mengatur variabel lingkungan, termasuk:
~/.profile
~/.bashrc
~/.bash_profile
~/.gnomerc
~/.Rprofile
/etc/bash_bashrc
/etc/profile
/etc/screenrc
Saya mengumpulkan bahwa file dalam /etc/
pekerjaan untuk semua pengguna sedangkan file dalam $HOME
adalah khusus pengguna. Saya juga mengumpulkan yang .profile
dimuat saat login sedangkan .bashrc
dimuat ketika /bin/bash
dijalankan. Saya juga mengerti bahwa program yang berbeda memiliki file pengaturan yang berbeda (misalnya .Rprofile
untuk R). Tetapi saya akan menghargai beberapa klarifikasi:
- Apakah
*rc
dan*profile
file pada dasarnya berbeda? - Apa ruang lingkup file tersebut (misalnya file mana yang biasanya digunakan dengan Linux)
- Apakah ada hierarki (misalnya,
.bashrc
variabel yang ditimpa diatur di.settings
) - Apa referensi yang bagus untuk kelas file ini? Untuk opsi dalam file ini?
INVOCATION
bagian dalamman bash
. LihatFHS
artikel wiki di sistem file Linux. Itu akan memberi Anda awal yang baik dan menjawab beberapa pertanyaan ini. File dengan titik sebelumnya (.
) biasanya khusus pengguna - mereka berada di$HOME
direktori pengguna .Jawaban:
Pengaturan file konfigurasi jauh lebih seragam daripada pertanyaan Anda tampaknya menyiratkan. Tidak ada "kelas", tidak ada "hierarki", dan tidak ada "konfigurasi czar" global atau komite yang menetapkan sintaksis umum atau generalisasi bersih yang bagus lainnya seperti yang Anda cari. Hanya ada banyak aplikasi yang terpisah seperti
R
,bash
,screen
dan lingkungan desktop GNOME, semuanya memiliki cara mereka sendiri dalam melakukan sesuatu, sehingga Anda harus melihat dokumentasi untuk setiap program individu untuk menjawab spesifik pertanyaan tentang file tertentu. Jika tampaknya ad-hoc, itu karena: sebagian besar perangkat lunak Unix / Linux di luar sana dikembangkan untuk tujuan yang berbeda oleh orang yang berbeda yang semuanya melakukan konfigurasi sedikit berbeda.Untuk menjawab pertanyaan Anda secara langsung:
*rc
dan*profile
tidak terlalu berarti, jadi pertanyaan ini tidak bisa dijawab. "rc" hanyalah singkatan atau akhiran yang biasa digunakan untuk file konfigurasi. Etimologinya kembali ke zaman kuno (pada tahun-tahun komputer), dan mungkin berarti menjalankan perintah (dari runcom ). Hanya karena aplikasi menggunakan kata yang sama tidak berarti mereka menyetujui konvensi. "profil" adalah sufiks yang jauh lebih jarang.Tentukan "ruang lingkup". Sebagian besar aplikasi tidak berbagi file konfigurasi dengan aplikasi lain yang tidak terkait. Satu-satunya pengecualian yang mungkin adalah
/etc/profile
dan.profile
, yang dapat digunakan oleh beberapa shell yang berbeda (termasuk setidaknyash
danbash
). Ada sesuatu yang disebut lingkungan yang terkait dengan setiap proses yang berjalan yang dapat berisi variabel yang dapat mempengaruhi perilaku proses tersebut. Secara umum, variabel lingkungan diatur oleh file konfigurasi shell yang sesuai, atau mungkin file konfigurasi lingkungan desktop grafis apa pun yang Anda gunakan. Ada juga file konfigurasi untuk "perpustakaan", seperti.inputrc
untuk readline dan.gtkrc*
untuk GTK, yang akan memengaruhi setiap aplikasi yang menggunakan perpustakaan.Tidak, tidak ada hierarki global untuk file konfigurasi. Sekali lagi, lihat dokumentasi untuk program spesifik yang dimaksud, misalnya,
bash
manual untukbash
. Konvensi umum yang biasanya dapat Anda andalkan adalah pengaturan pengguna dalam$HOME
mengesampingkan konfigurasi seluruh sistem di/etc
. Ini biasanya dilakukan dengan membaca file pengguna setelah sistem, sehingga pengaturan kemudian menimpa yang sebelumnya. Namun, ini bukan jaminan, dan untuk jawaban pasti Anda harus merujuk ke dokumentasi untuk program khusus yang Anda gunakan.Tidak ada "kelas", setidaknya tidak ada yang cukup umum untuk mencakup semua file yang Anda daftarkan dalam pertanyaan Anda, jadi pertanyaan tentang referensi untuk "kelas" seperti itu masih bisa diperdebatkan. Sekali lagi, lihat dokumentasi program khusus yang Anda gunakan.
sumber
Saya pikir pertanyaan ini terlalu luas pada banyak tingkatan, misalnya Anda mengajukan pertanyaan tentang setidaknya empat program berbeda dalam satu pertanyaan. Saya hanya akan melihat perbedaan antara file konfigurasi di
/etc
dan$HOME
.Unix adalah sistem operasi multi-user, ini berarti banyak orang yang berbeda dapat menggunakan sistem, baik dengan menggunakan
ssh
,telnet
atauXorg
. Untuk memberikan konfigurasi standar bagi pengguna Anda, Anda dapat memberikan konfigurasi seluruh sistem/etc/
, ini biasanya juga digunakan oleh Distribusi Anda untuk memberikan konfigurasi global untuk misalnyabash
atauscreen
.Di sisi lain, beberapa pengguna ingin menyesuaikan pengaturan untuk program mereka sendiri seperti ikatan kunci, warna, atau tampilan. Ini dilakukan melalui file konfigurasi di file
$HOME
. Jadi singkatnya/etc/
memberikan konfigurasi sistem lebar sedangkan file konfigurasi dalam $ HOME memungkinkan pengguna untuk mengubah / mengganti konfigurasi sistem lebar.sumber
Sebagian dari jawabannya berasal dari pos ini :
.bashrc
adalah skrip shell yang dijalankan Bash setiap kali dijalankan secara interaktif.Kontras
.bash_profile
dan.profile
yang hanya berjalan di awal shell login baru. (bash -l)Anda memilih apakah perintah masuk
.bashrc
vs.bash_profile
tergantung pada apakah Anda ingin dijalankan sekali atau untuk setiap shell interaktif mulai.sumber