Saya menyadari ada /etc/profile
dan /etc/bashrc
file untuk mengatur variabel lingkungan global dan mungkin saya hanya salah paham tujuan mereka, tapi ...
Apakah ada bash_profile
file global ?
Saya menggunakan Mac OS X
Itu tidak dipanggil bash_profile
, tetapi tempat standar untuk konfigurasi global bash adalah /etc/bash.bashrc
. Biasa disebut ini /etc/profile
jika shellnya bash. Misalnya, di saya, /etc/profile
saya punya:
if [ "$PS1" ]; then
if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
# The file bash.bashrc already sets the default PS1.
# PS1=’0
if [ ‐f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
fi
fi
Dalam hal penggunaan, /etc/profile
menyediakan konfigurasi seluruh sistem untuk semua shell Bourne yang kompatibel (sh, bash, ksh, dll.). Biasanya tidak diperlukan untuk yang setara /etc/bash_profile
, karena maksud dari file profil adalah untuk mengontrol perilaku shell masuk. Biasanya apa pun yang ingin Anda lakukan di sana tidak akan spesifik untuk bash. /etc/bash.bashrc
khusus untuk bash, dan akan dijalankan untuk shell login maupun non-login.
Untuk lebih rumit, sepertinya OS X bahkan tidak punya /etc/bash.bashrc
. Ini mungkin terkait dengan fakta bahwa Terminal di OS X default untuk berjalan sebagai shell login , sehingga perbedaannya hilang:
Pengecualian untuk pedoman jendela terminal adalah Terminal.app Mac OS X, yang menjalankan shell login secara default untuk setiap jendela terminal baru, dengan memanggil .bash_profile alih-alih .bashrc. Emulator terminal GUI lain mungkin melakukan hal yang sama, tetapi kebanyakan cenderung tidak.
Saya tidak menjalankan OS X, jadi sejauh pengetahuan saya berakhir di sana.
/etc/bash.bashrc
dari shell yang tidak interaktif./etc/profile
dapat dibaca oleh shell non-interaktif. Lihat Perbedaan antara Shell Login dan Shell Non-Login?/etc/profile
di Ubuntu 12.04. Apa yang akan Anda sarankan jika seseorang menginginkan/etc/profile
yang dieksekusi hanya di bawah bash, dan tidak ada shell yang kompatibel dengan sh lainnya?/etc/profile
file untuk sistem saya berisi komentar di bagian atas yang berbunyi:# System-wide .profile for sh(1)
. Apakah rataprofile
- rata inish
spesifik? Apakahsh
entah bagaimana berjalan sebelumnyabash
?sh
adalah bagian daribash
./etc/profile
dieksekusi untuksh
,,bash
dan semua shell yang kompatibel dengan Bourne./etc/bashrc
di mac, bukan/etc/bash.bashrc
. Tampaknya juga berjalan untuk/bin/sh
./etc/profile
adalah globalbash_profile
. Tidak ada file yang spesifik untuk bash, bash hanya membaca file standar yang dibaca oleh semua shell Bourne-style. Di situlah Anda dapat mengatur variabel lingkungan sistem-lebar.Lihat Apakah ada file setara ".bashrc" yang dibaca oleh semua shell? untuk tinjauan umum tentang file startup umum bash.
sumber
Setup Interactive Shell (Bash) Secara global
Ini tidak memuat
/etc/profile
, jadi tidak ada dalam/etc/profile.d/
dimuat (tidak seperti shell login, lihat akhirnya).File global untuk ini adalah / etc / bashrc atau /etc/bash.bashrc (tergantung pada
-DSYS_BASHRC=
flag yang ditetapkan pada waktu kompilasi):Biasanya adalah ide yang baik untuk membiarkan file ini apa adanya (sebanyak mungkin) untuk menghindari konflik. Strategi yang saya gunakan mirip dengan yang digunakan shell (/ etc / profile).
Strategi saya adalah menambahkan loader ke file di atas:
Sekarang saya dapat dengan mudah menambahkan n kustomisasi ke file shell global interaktif (bash) dengan memasukkan .shfiles baru ke direktori /etc/bashrc.d.
Warnai Grep Secara Global
/etc/bashrc.d/grep.sh
Anda dapat melakukan ini dengan liner satu ini:
Bandingkan profile.d vs bashrc.d
Jika, setelah membaca ini, Anda tetap tidak yakin, lakukan ini untuk meyakinkan diri sendiri:
Buka emulator terminal baru dan cari beberapa kata umum di direktori pengguna Anda seperti "the" menggunakan grep
Tidak ada yang harus diwarnai. Lakukan hal yang sama di konsol virtual dengan melakukan CTRLALTF1 (ingat bahwa server X Anda mungkin berjalan di CTRLALTF7 sehingga Anda dapat beralih kembali. Jika Anda lupa, cukup restart desktop manager Anda, misalnya)
akan menghasilkan hasil berwarna seperti yang diinginkan.
Tidak ada yang harus diwarnai. Lakukan hal yang sama di konsol virtual dengan melakukan CTRLALTF1(ingat bahwa server X Anda mungkin berjalan pada CTRLALTF7sehingga Anda dapat beralih kembali. Jika Anda lupa, cukup restart manajer desktop Anda, misalnya)
akan menghasilkan hasil berwarna seperti yang diinginkan.
Sebuah shell login adalah apa yang Anda dapatkan ketika Anda boot mesin atau switch konsol virtual dengan CTRLALTF1melaluiFNth virtual konsol virtual.
Login Shell memuat
/etc/profile
sambil memuat/etc/profile.d/*.sh
file.sumber