bashbertindak berbeda apakah itu shell atau bahasa pemrograman normal (suka perlatau python).
Secara desain, pengaturan dalam ~/.bash_profile,, ~/.bashrcdll. Adalah bagi pengguna untuk mengatur hal-hal ketika bashmemainkan peran shell (shell login, shell interractive). Pikirkan tentang lingkungan yang Anda miliki di xterm(shell interaktif) atau di sshsesi (shell login) atau di konsol (shell login).
Di sisi lain, bashjuga merupakan bahasa pemrograman yang kuat - pikirkan banyak skrip untuk mengelola layanan di systemd- yang membutuhkan gaya kerja yang berbeda. Misalnya, ketika pengembang menulis skrip sistem atau bashprogram, ia tidak akan suka untuk sumber pengguna ~/.bash_profilesecara otomatis. Ini adalah program normal, bukan shell. Program normal (termasuk bashprogram) secara alami akan mewarisi pengaturan dari lingkungan kerja saat ini (shell), tetapi tidak mengaturnya .
Jika kita menulis sebuah program untuk cronin bash– itu kebetulan ditulis dalam bash; pada kenyataannya, kita dapat menulis dalam pythonatau perlatau progamming lainnya pada bahasa maka kita dapat memiliki pilihan untuk sumber bash's ~/.bash_profile(baca: pengaturan dari shell pengguna, yang kebetulan menjadi bahasa yang sama bahasa pemrograman Anda):
[ -f /home/user/.bash_profile ] && . /home/user/.bash_profile
Namun, bagaimana jika pengguna tertentu itu tidak menggunakan bashshellnya? Dia / dia dapat menggunakan zsh, ksh, fish, dll Jadi, praktek yang akan benar-benar bekerja ketika menulis program untuk kepentingan umum.
Jadi, Anda dapat sumber ~/.bash_profilejika Anda pikir itu akan berhasil. Tapi, di sini, ini bukan tentang apakah kita dapat sumber file, ini tentang bagaimana hal-hal seharusnya bekerja dalam sistem: konsep desain . Singkatnya: kita harus melihat bashsesuatu yang memiliki 2 peran: bahasa shell dan progamming . Maka semuanya akan jauh lebih mudah dipahami.
.bashrcmemiliki garis yang menghentikannya berjalan di shell non-interaktif.