Secara definisi, shell adalah program yang digunakan untuk menghubungkan pengguna dengan sistim operasi. Lebih tepatnya shell menghubungkan user dengan kernel sistem operasi, dalam hal ini Linux kernel. Setiap kali perintah yang dimasukkan oleh user akan diterjemahkan oleh shell kemudian hasilnya akanvdikirimkan kekernel dan kernel inilah yang akan melakukan operasi yang diminta oleh user tersebut.
Sebagian perintah seperti halnya cd, cp merupakan built in command, maksudnya secara internal perintah tersebut sudah terdapat didalam shell itu sendiri. Sebagian lagi merupakan external command yaitu perintah-perintah yang berupa file yang berdiri sendiri, misalnya ping, finger, rm dan perintah lainnya.
Shell pertama kali di load ketika user berhasil me-login. Shell yang akan dijalankan oleh sistem yaitu shell yang tertera pada file /etc/passwd.
Ketika user memasukkan sebuah perintah, shell kemudian menentukan apakah perintah itu built-in command atau bukan. Bila ternyata perinyah itu bukan built in command maka shell akan mencari file pada seluruh direktori yang tertera pada search path. Search path adalah variabel yang berisi daftar direktori dimana file executable kemungkinan berada. Jika ternyata file tersebut tidak juga ditemukan maka shell akan mengeluarkan pesan error. Tetapi, bila ternyata perintah itu diyemukan maka perintah tersebut akan dieksekusi. Dalam menjalanjan fungsinya perintah tersebut melakukan pemanggilan pada kernel dari sistem operasi.
Beberapa shell yang banyak digunakan pada sistem Linux antara lain Bourne shell (bsh), Korn shell (ksh) dan C shell (csh). Tiap shell tersebut memiliki kelebihan dan kekurangan.
Bourne shell diciptakan oleh Steven Bourne. Shell ini merupakan shell UNIX yang pertama dan terdapat pada semua sistim UNIX. Bourne shell memiliki bahasa pemrograman shell yang baik tapi kurang nyaman dalam hal interaktivitas, misalnya perintah harus ditulis dengan lengkap secara manual sementara shell yang lain memiliki fasilitas command line completion.
C shell diciptakan ole Bill joy. Bahasa pemrograman shell ini lebih sulit untuk digunakan karena memiliki sintaks mirip bahasa C dan oleh karena itu shell ini dinamakan C shell. Kelebihan shell ini memiliki kemampuan interaktivitas yang lebih baik dibandingkan Bourne shell serta juga memiliki fasilitas command-completion untuk melengkapi perintah yang belum lengkap hanya dengan menekan tombol Tab.
Korn shell diciptakan oleh Dave korn. Shell ini diciptakan dengan menggabungkan kelebihan dari Bourne shell dan C shell sehingga shell ini memiliki interaktivitas yang baik juga gaya pemrograman shell yang mudah.