GNU/Linux >> Belajar Linux >  >> Linux

Perbedaan Antara ~/.profile, ~/.bashrc, ~/.bash_profile, ~/.gnomerc, /etc/bash_bashrc, /etc/screenrc …?

Jawaban atas pertanyaan di SO dan askubuntu, bersama dengan melihat-lihat (dan membaca tajuk) $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 file itu di /etc/ bekerja untuk semua pengguna sedangkan file di $HOME adalah khusus pengguna. Saya juga mengumpulkan .profile . itu dimuat saat login sedangkan .bashrc dimuat ketika /bin/bash dieksekusi. Saya juga memahami bahwa program yang berbeda memiliki file pengaturan yang berbeda (mis. .Rprofile untuk R). Tapi saya akan menghargai beberapa klarifikasi:

  • Apakah *rc dan *profile file pada dasarnya berbeda?
  • Apa cakupan file tersebut (mis. file mana yang biasa digunakan dengan Linux)
  • Apakah ada hierarki (mis. .bashrc menimpa variabel yang diatur dalam .settings )
  • Apa referensi yang bagus untuk kelas file ini? Untuk opsi dalam file ini?

Pertanyaan terkait

  • “Bagaimana cara mengakses variabel lingkungan bash dari dalam R di emacs-ess?”
  • “Perbedaan antara meluncurkan aplikasi dari pintasan keyboard vs terminal?”

Jawaban yang Diterima:

Organisasi file konfigurasi jauh lebih tidak seragam daripada yang disiratkan oleh pertanyaan Anda. Tidak ada "kelas", tidak ada "hierarki", dan tidak ada "tsar konfigurasi" global atau komite yang menetapkan sintaks umum atau generalisasi bersih yang bagus seperti yang Anda cari. Hanya ada banyak aplikasi terpisah seperti R , bash , screen dan lingkungan desktop GNOME, semuanya memiliki cara mereka sendiri dalam melakukan sesuatu, jadi Anda harus melihat dokumentasi untuk setiap program individu untuk menjawab setiap 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 dengan sedikit berbeda.

Untuk menjawab pertanyaan Anda yang lain dengan tepat:

  • *rc dan *profile tidak berarti banyak, jadi pertanyaan ini tidak bisa dijawab. "rc" hanyalah singkatan atau akhiran yang umum digunakan untuk file konfigurasi. Etimologinya kembali ke zaman kuno (dalam 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 kurang umum.

  • Definisikan "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 setidaknya sh dan bash ). Ada sesuatu yang disebut lingkungan yang terkait dengan setiap proses yang berjalan yang dapat berisi variabel yang dapat mempengaruhi perilaku proses tersebut. Umumnya, variabel lingkungan diatur oleh file konfigurasi shell yang sesuai, atau mungkin file konfigurasi dari lingkungan desktop grafis apa pun yang Anda gunakan. Ada juga file konfigurasi untuk “libraries”, seperti .inputrc untuk readline dan .gtkrc* untuk GTK, yang akan memengaruhi setiap aplikasi yang menggunakan library.

  • Tidak, tidak ada hierarki global untuk file konfigurasi. Sekali lagi, lihat dokumentasi untuk program tertentu yang dimaksud, misalnya bash manual untuk bash . Konvensi umum yang biasanya dapat Anda andalkan adalah pengaturan pengguna di $HOME menimpa konfigurasi seluruh sistem di /etc . Ini biasanya dilakukan dengan membaca file pengguna setelah file sistem, sehingga pengaturan selanjutnya 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" semacam itu dapat diperdebatkan. Sekali lagi, lihat dokumentasi program khusus yang Anda gunakan.

Terkait:Menggabungkan folder dengan mv?
Linux
  1. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  2. Linux:Perbedaan Antara /dev/console , /dev/tty Dan /dev/tty0?

  3. Perbedaan Antara /opt Dan /usr/local?

  1. Centos – Apa Perbedaan Antara /usr/lib/systemd/system Dan /etc/systemd/system?

  2. Bagaimana /etc/motd Diperbarui?

  3. Kapan saya harus menggunakan /dev/shm/ dan kapan saya harus menggunakan /tmp/?

  1. Perbedaan antara /etc/crontab dan crontab -e

  2. /etc/passwd menampilkan pengguna dalam grup, tetapi /etc/group tidak

  3. Apa hubungan antara direktori /etc/init.d dan /etc/rcX.d di Linux?