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.