Unix och sh

"Sh" är en förkortning för "shell" (skal), som är namnet på den ursprungliga kommandotolken i operativsystemet Unix. (Det fullständiga namnet är "Bourne shell", efter S. R. Bourne som skrev första versionen.)

Ordet "skal" kommer sig av att man redan på tidigt 70-tal, när Unix först utvecklades, på allvar hade börjat tänka kring systemutveckling i termer av abstraktionsnivåer, och man tänkte sig ett system som en kula, boll eller nöt med flera lager: en "kärna" (core, kernel) som hanterade systemets hårdvara och interna funktioner, ett eller flera mellanlager som hanterade funktioner på högre abstraktionsnivå, och ytterst ett "skal" som hanterade kommunikationen mellan datorsystemet och användaren.

Till skillnad från en del andra operativsystem, så är skalet i Unix ett program som alla andra, och inte inbyggd i operativsystemet. Detta innebär att varje användare kan välja att använda ett annat skalprogram vid behov, och många gör det. De två standardalternativen till "sh" är "csh" (C shell) och "ksh" (Korn shell), och några andra vanligt förekommande är "tcsh", "bash" och "zsh".

Trots detta är det det ursprungliga "sh" som oftast används för att programmera på skalnivå, bland annat för att det är det enda skal man kan vara helt säker på att det finns på alla Unixsystem. Vissa andra skal, till exempel "ksh" och "bash", är i stort sett kompatibla med "sh", och går att programmera på samma sätt.