Sebuah shell dimulai ketika Anda login, tapi itu juga dimulai oleh program-program seperti make
, atau ketika Anda menjalankan shell script, atau ketika Anda mengetik :sh
ke vi
, atau ketika Anda membuat jendela terminal baru.
Awalnya, shell membaca ~/.profile
saat Anda masuk atau berlari su
. Script ini akan melakukan hal-hal seperti mengumumkan apakah Anda memiliki email baru, menyesuaikan karakter Anda dan membunuh karakter, dan mengatur dan mengekspor variabel TERM dan PATH. Ketika dimulai di hampir semua konteks lain, shell tidak membaca ~/.profile
, karena melakukan sebagian besar dari hal-hal itu akan berlebihan. Anda diharapkan telah mengekspor variabel shell penting ke shell baru.
Cara shell tahu apakah membaca ~/.profile
adalah untuk memeriksa apakah karakter pertama argv[0]
, alias $0
, adalah '-'
.
Dimulai dengan csh
, alias diperkenalkan. Alias tidak diekspor ke lingkungan. csh
dirancang untuk membaca dalam dua skrip inisialisasi yang berbeda. ~/.login
dibaca hanya ketika pengguna masuk, dan isyarat untuk melakukan ini adalah jika argv[0]
dimulai dengan '-'
. ~/.cshrc
dibaca setiap kali shell dimulai. Secara umum, satu alias ditempatkan di ~/.cshrc
dan yang lainnya di ~/.login
. csh
juga didukung ~/.logout
, yang dalam kebanyakan kasus hanya membersihkan layar dan berlari fortune
.
Kerang lain mengadopsi fitur yang sama ini. ksh
akan membaca ~/.kshrc
, bash
akan membaca ~/.bashrc
, dan di sanalah Anda akan menempatkan definisi alias Anda.
Jadi, untuk membuat cerita panjang pendek, aplikasi yang memunculkan shell harus memutuskan apakah itu harus menjadi "shell login", dalam hal ini ada yang '-'
di awal, atau shell biasa. Dalam kebanyakan kasus, shell yang akan interaktif dimulai sebagai shell login, dan shell yang dimaksudkan hanya untuk menjalankan beberapa perintah, baik sebagai argumen atau dari skrip, dan kemudian keluar adalah shell biasa.
Tapi semuanya tergantung pada kehendak aplikasi yang memulai shell.