Pertanyaan sederhana: Saya baru menyadari bahwa saya belum pernah melihat shebang di atas .bashrc
skrip, yang membuat saya berpikir sistem menggunakan shell default untuk sumbernya saat login ( ${SHELL}
). Saya merenungkan alasan mengapa demikian, yaitu apakah dianggap kebiasaan buruk untuk menggunakan sesuatu selain shell default untuk menjalankan skrip login.
22
Jawaban:
.bashrc
dan.bash_profile
yang TIDAK skrip. Mereka adalah file konfigurasi yang bersumber setiap kalibash
dieksekusi dalam salah satu dari 2 cara:Bagian INVOCASI dari halaman bash man adalah yang relevan.
Anda dapat mengontrol kapan mereka dimuat melalui saklar baris perintah,
--norc
dan--noprofile
. Anda juga dapat mengganti lokasi tempat mereka dimuat menggunakan--rcfile
sakelar.Seperti yang disebutkan oleh orang lain, Anda dapat meniru bagaimana file-file ini dimuat melalui penggunaan
source <file>
perintah atau penggunaan. <file>
perintah.Yang terbaik untuk memikirkan fungsi ini sebagai berikut:
Metode untuk memohon
Topik ini sepertinya muncul sesekali, jadi inilah sedikit contekan dari berbagai cara untuk memohon
bash
dan apa hasilnya. CATATAN: Untuk membantu saya menambahkan pesan "bersumber $ HOME / .bashrc" dan "bersumber $ HOME / .bash_profile "ke file masing - masing.panggilan dasar
bash -i
bash -l
bash -il -atau- bash -li
bash -c "..cmd .."
CATATAN: Perhatikan bahwa
-c
sakelar tidak sumber salah satu file!menonaktifkan file konfigurasi agar tidak dibaca
bash --norc
bash --noprofile
bash --norc -i
bash --norc -l
bash --noprofile -i
bash --noprofile -l
bash --norc -i -atau- bash --norc -l
Cara yang lebih esoteris untuk memanggil bash
bash --rcfile $ HOME / .bashrc
bash --norc --rcfile $ HOME / .bashrc
Ini gagal
bash -i -rcfile ~ / .bashrc
bash -i -rcfile .bashrc
Mungkin ada lebih banyak tetapi Anda mendapatkan intinya, semoga ....
Apa lagi?
Terakhir jika Anda begitu terpesona dengan topik ini sehingga Anda ingin membaca / mengeksplorasi lebih banyak tentangnya, saya sangat menyarankan untuk melihat pada Panduan Pemula Bash, khususnya bagian: 1.2. Keuntungan dari Bourne Again SHell . Berbagai subbagian di bawahnya, "1.2.2.1. Doa" melalui "1.2.2.3.3. Perilaku shell interaktif" menjelaskan perbedaan level rendah antara berbagai cara yang dapat Anda lakukan
bash
.sumber
.bash_profile
menyertakan baris ke sumber.bashrc
. Tapi saya percaya itu sangat tipikal pengaturan..bashrc
dan.bash_profile
bukan skrip . IMHO mereka adalah skrip tujuan khusus yang bersumber secara implisit selama inisialisasi bash atau secara eksplisit ketika Anda perlu menerapkan modifikasi mereka. Mereka tidak hanya mengkonfigurasi lingkungan bash (variabel, fungsi, alias ...) seperti yang diharapkan dari file konfigurasi. Mereka dapat melakukan tindakan apa pun seperti dalam skrip umum. Misalnya mereka dapat memulai berbagai tindakan seperti tugas latar belakang, menulis catatan log, menginisialisasi beberapa program dll. Bagaimanapun juga, terima kasih atas ringkasan terperinci!.bashrc
skrip hanya dijalankan denganbash
sendirinya. Mereka tidak berdiri bebas, dan mereka tidak dimaksudkan untukexec
diucapkan oleh sistem. (Pada kenyataannya, mereka umumnya tidak ditandai dapat dieksekusi, dan, seperti yang Anda katakan, mereka tidak memiliki garis shebang.)Script tersebut dimaksudkan untuk menjadi
source
d, karena mereka umumnya melakukan hal-hal seperti mengubah variabel lingkungan ($PATH
, misalnya), yang diharapkan bertahan setelah script selesai. Jadi benar-benar tidak ada gunanya mencoba mengeksekusi satu dalam subkulit.sumber
Selain balasan lain, perhatikan bahwa jika Anda menginginkannya, tidak ada yang melarang Anda untuk meletakkan shebang di awal file konfigurasi ini.
Itu tidak ada salahnya shell mencari mereka karena shebang akan diproses seperti komentar biasa, yaitu diabaikan.
Itu mungkin membantu editor yang menggunakan penyorotan sintaks untuk mengetahui bahasa pemrograman apa yang digunakan dalam file.
Perhatikan bahwa beberapa editor suka
vim
memberikan cara alternatif seperti modeline untuk yang terakhir. yaitu Anda selalu dapat menempatkan garis mode di akhir~/.bashrc
dan~/.bash_profile
seperti:sumber
.bash_profile
atas rekomendasi dari ShellCheck.Saya membaca ini di mana saja tidak tahu persis di mana tetapi itu benar
sumber