Det finns en liten mängd kommandon som av diverse anledningar finns inbyggda i skalet istället för att vara separata program. I de flesta fall är anledningen att kommandot inte skulle gå fungera om det vore separat kommando, eftersom det förändrar något inne i skalet. Förutom kommandona "set" och "export" som redan nämts i samband med variabler, och som används för att sätta och exportera värdet av variabler, så finns bland annat dessa:
Ett kraftfullare alternativ till alias är egendefinierade funktioner. Funktioner definieras på ett sätt som påminner lite om hur det kan se ut i programspråket C:
funktionsnamn () { definition }med bland annat skillnaden att parentesparet efter funktionsnamnet inte får ha någonting emellan sig. Man kan alltså inte ge namn åt funktionens argument. Argumenten heter istället "$1" (första argumentet), "$2" (andra argumentet), och så vidare.
När funktionen är definierad kan den användas som ett vanligt kommando.