Sebagian besar cangkang yang digunakan dalam lingkungan UNIX modern dimaksudkan untuk memenuhi spesifikasi sh POSIX. POSIX sh berasal dari shell Korn asli (ksh88), yang pada gilirannya berasal dari shell Bourne sebelumnya, tetapi POSIX sh hanya menentukan sebagian kecil dari fungsionalitas ksh88 sekalipun. Shell yang hanya menerapkan persyaratan minimum tidak memiliki banyak fitur yang diperlukan untuk menulis semua kecuali skrip yang paling sepele dengan cara yang aman dan masuk akal. Misalnya, variabel lokal dan array adalah ekstra non-standar.
Oleh karena itu, alasan pertama adalah untuk memperpanjang shell dengan fitur tambahan. Kerang yang berbeda memilih untuk fokus pada hal yang berbeda. Sebagai contoh, Zsh berfokus pada fitur interaktif canggih sementara ksh93 (shell asli "asli" saat ini) berfokus pada fitur dan kinerja pemrograman yang kuat. Bahkan kerang yang sangat minim seperti Dash menambahkan setidaknya beberapa tambahan non-standar seperti variabel lokal.
Fitur-fitur tambahan jarang bisa dioperasikan secara luas. Sebagian besar fitur ksh88 cukup dapat dioperasikan dengan baik seperti sintaks globbing yang diperluas, tetapi dengan fitur yang tidak standar, tidak ada jaminan, dan Anda harus benar-benar tahu apa yang Anda lakukan untuk menggunakannya dengan cara yang portabel.
Alasan kedua adalah warisan. Masih ada banyak Unix eksklusif di luar sana yang menggunakan implementasi non-standar kuno untuk / bin / sh mereka. Sampai baru-baru ini, Solaris masih menggunakan Bourne sebagai pengganggu mereka dan memilih untuk mempertahankan cangkang Heirloom daripada meningkatkan ke sesuatu yang modern. Sistem ini biasanya datang dengan cangkang berbeda yang dapat Anda alihkan, misalnya dengan mengubah variabel PATH Anda atau mengubah shebang di dalam skrip individual.
Jadi untuk meringkas. Ada beberapa shell, seringkali secara default:
- Untuk fitur tambahan, terutama untuk berurusan dengan ekstra non-portabel.
- Untuk menangani skrip lawas yang sering tidak terawat.
- ukuran / kinerja. Sistem tertanam sering membutuhkan cangkang kecil seperti mksh atau busybox sh.
- Alasan perizinan. AT&T ksh adalah perangkat lunak berpemilik hingga sekitar 2000-an. Ini adalah sebagian besar yang memunculkan semua klon seperti ksh seperti Zsh dan Bash.
- Alasan historis lainnya. Meskipun tidak terlalu populer saat ini, ada upaya radikal dalam mendesain ulang bahasa, seperti scsh dan es. Fitur substitusi proses dari banyak shell awalnya berasal dari rc (dengan sintaks yang sedikit berbeda), dan memperkuat ekspansi dari csh. Kerang yang berbeda memiliki kombinasi fitur yang berbeda yang tersedia, biasanya dengan beberapa perbedaan yang halus atau tidak begitu halus.