~/.bashrcdan /etc/bash.bashrcdijalankan setiap kali bashshell interaktif dimulai.
Sebaliknya, ~/.profiledan /etc/profiledijalankan setiap kali shell login dimulai. Jadi itu tidak harus menjadi bashshell, tetapi harus menjadi shell login (dan banyak bashcontoh shell bukan shell login ).
- Sebuah
bashshell adalah shell di mana program shell yang menyediakan itu bash, daripada program lain, seperti dash.
- Shell login adalah shell yang dimulai secara otomatis sebagai konsekuensi dari login, untuk menyediakan antarmuka pengguna (grafis atau baris perintah) untuk login. Ketika shell login keluar, login berakhir.
Oleh karena itu, menempatkan pujian yang menambahkan entri ke PATHdalam bashrcfile akan:
Tidak melakukan apa-apa ketika cangkang tidak bash, yang sering terjadi. Misalnya, PATHakan tidak dimodifikasi ketika Anda berada dalam sesi login grafis. Ingat, PATHtidak hanya digunakan oleh program command-line.
Tambahkan berulang-ulang di hadapan bashcangkang bersarang . Jadi, jika Anda memulai sebuah shell di dalam shell - yang sangat umum, karena berbagai alasan - maka Anda akan memiliki beberapa ~/binentri yang ditumpuk di PATH. Ini membuat PATHvariabel lingkungan sulit dibaca, dan kadang-kadang juga menurunkan kinerja.
Ini tidak diinginkan. Dengan demikian akan salah untuk meletakkan ini dalam bashrcfile; itu benar-benar milik ~/.profile. ~/.profileadalah tempat yang tepat untuk:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Shell non-login memiliki shell login (atau sesuatu yang berperilaku seperti shell login) sebagai induknya, dan mewarisi sebagian besar variabel lingkungannya, termasuk PATHdari shell login ini. Jadi, memasukkan perintah pengubah jalur ~/.profilemengharuskan Anda logout dan kembali agar efektif, tetapi juga mempengaruhi lingkungan shell non-login (serta lingkungan untuk program yang bukan shell, karena setiap program mendapatkan set variabel lingkungan sendiri - disebut "lingkungan" - diwarisi dari proses induknya).