bash
bertindak berbeda apakah itu shell atau bahasa pemrograman normal (suka perl
atau python
).
Secara desain, pengaturan dalam ~/.bash_profile
,, ~/.bashrc
dll. Adalah bagi pengguna untuk mengatur hal-hal ketika bash
memainkan peran shell (shell login, shell interractive). Pikirkan tentang lingkungan yang Anda miliki di xterm
(shell interaktif) atau di ssh
sesi (shell login) atau di konsol (shell login).
Di sisi lain, bash
juga 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 bash
program, ia tidak akan suka untuk sumber pengguna ~/.bash_profile
secara otomatis. Ini adalah program normal, bukan shell. Program normal (termasuk bash
program) secara alami akan mewarisi pengaturan dari lingkungan kerja saat ini (shell), tetapi tidak mengaturnya .
Jika kita menulis sebuah program untuk cron
in bash
– itu kebetulan ditulis dalam bash
; pada kenyataannya, kita dapat menulis dalam python
atau perl
atau 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 bash
shellnya? 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_profile
jika 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 bash
sesuatu yang memiliki 2 peran: bahasa shell dan progamming . Maka semuanya akan jauh lebih mudah dipahami.
.bashrc
memiliki garis yang menghentikannya berjalan di shell non-interaktif.