Pertanyaan ini sudah ada jawabannya di sini:
Saya menemukan banyak orang mencari tahu mengapa instruksi mirip dengan ini:
Put X to your ~/.bashrc and you can do Y
tidak bekerja
Selalu ternyata file startup bash Mac OS X (atau Bash Mac sendiri) tidak sumber file ~ / .bashrc, baik di shell login, atau di shell yang dihasilkan dari sistem window - seperti aplikasi Terminal di Mac OS X)
Mengapa demikian, ketika semua sistem mirip Unix dengan Bash yang pernah saya gunakan sebelumnya telah melakukan ini?
PS:
Saya menemukan apa yang dikatakan Bash tentang file startup (yang dapat membantu):
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 mengeksekusi perintah dari yang pertama yang ada dan dapat dibaca. Opsi --noprofile dapat digunakan ketika shell mulai menghambat perilaku ini.
Sumber: http://www.gnu.org/software/bash/manual/bashref.html#Bash-Startup-Files
sumber
~/.bash_profile
dieksekusi tetapi tidak~/.bashrc
. Aneh.Jawaban:
Di OSX terminal secara default memulai sesi login sehingga membaca .bash_profile dll. (Proses login GUI yang meminta nama dan kata sandi Anda tidak menggunakan skrip shell dan memulai tidak ada shell itu semua dilakukan dari launchd dan ruang kerja)
Di Unix lain xterm menjalankan shell non login secara default sehingga mereka membaca .bashrc sebagai skrip yang menampilkan kata sandi Anda, dll. Saat login memanggil sesi login dan semua terminal adalah sub proses dari ini dan mewarisi lingkungan shell.
Dari dokumen GNU yang Anda maksud
sumber
bash
hanya membaca.bashrc
untuk cangkang non-login :Terminal dimulai
bash
sebagai shell login (dijalankanw
untuk melihat bahwabash
instance dijalankan sebagai-bash
),.bashrc
tidak pernah dibaca secara otomatis.sumber