Apa perbedaan antara /etc/bash.bashrc dan ~ / .bashrc? Yang mana yang harus saya gunakan?

20

Kapan saya harus menggunakan masing-masing dari dua file .bashrc untuk mengatur alias, prompt, dll?

cfischer
sumber

Jawaban:

34

/etc/bash.bashrc berlaku untuk semua pengguna

~/.bashrc hanya berlaku untuk pengguna di mana folder rumah itu berada.

Loïc Wolff
sumber
3
Dan tersirat dalam jawaban dex adalah ... Gunakan ~ / .bashrc lokal Anda dalam semua kasus kecuali di mana Anda ingin menegakkan kehendak Anda pada semua orang yang menggunakan mesin itu.
dacracot
Sebenarnya, Anda tidak menegakkan apa pun di /etc/bash.bashrc karena pengguna selalu dapat mengubahnya sendiri ~ / .bashrc
Kim
... kecuali ketika seseorang memutuskan untuk membuat semua variabel readonlydi /etc/bash.bashrc: \
grawity
1
Di bawah Ubuntu, file ini, seperti yang dikomentari di awal, harus "bersumber" dari file / etc / profile. Saya menambahkan perintah alias di akhir file /etc/bash.bashrc, dan menambahkan perintah "source /etc/bash.bashrc" di akhir file / etc / profile. Bekerja seperti pesona.
jfmessier
2

Menurut Dokumentasi Bash GNU :

Ketika Bash dipanggil sebagai shell login interaktif, atau sebagai shell non-interaktif dengan opsi --login, Bash pertama kali membaca dan mengeksekusi perintah dari file / etc / profile , jika file itu ada. Setelah membaca file itu, ia mencari ~ / .bash_profile , ~ / .bash_login, dan ~ / .profile, dalam urutan itu, dan membaca serta menjalankan perintah dari yang pertama yang ada dan dapat dibaca. Opsi --noprofile dapat digunakan ketika shell mulai menghambat perilaku ini.

Dipanggil sebagai shell non-login interaktif Ketika shell interaktif yang bukan shell login dimulai, Bash membaca dan mengeksekusi perintah dari ~ / .bashrc , jika file itu ada. Ini dapat dihambat dengan menggunakan opsi --norc. Opsi file --rcfile akan memaksa Bash untuk membaca dan menjalankan perintah dari file daripada ~ / .bashrc.

Jadi, biasanya, ~ / .bash_profile Anda berisi baris

jika [-f ~ / .bashrc]; kemudian . ~ / .bashrc; fi

setelah (atau sebelum) inisialisasi khusus login.

Felipe Alvarez
sumber
1
Tidak juga. Lihatlah file ini git.savannah.gnu.org/cgit/bash.git/tree/shell.c , dalam fungsi run_startup_files () di mana SYS_BASHRC digunakan, didefinisikan dalam git.savannah.gnu.org/cgit/bash.git/ tree / config-top.h
mloskot
1

Untuk preferensi pribadi Anda dan skrip pribadi atau fungsi bash, Anda harus menggunakan .bashrc (alias, fungsi Tambah ke bash ...)

Saat Anda ingin berbagi sesuatu dengan semua pengguna (atau sebagian besar pengguna) atau untuk hal-hal yang umum digunakan (Path untuk executable bersama, path untuk dokumentasi ...) masukkan ke /etc/bash.bashrc

Saya mengatakan sebagian besar pengguna karena bahkan katakanlah Anda menentukan skrip salam.sh yang mencetak "Hello world!"untuk semua pengguna, tetapi pengguna Pepe ingin menggunakan bukan skrip salam.sh yang mencetak "Hola el mundo!". Dia dapat memodifikasi jalurnya di .bashrc untuk menunjuk ke skripnya, bukan skrip Anda. Dengan kata lain pengguna dapat selalu menyesuaikan sesi di .bashrc dengan apa pun yang diinginkannya.

Debugger
sumber