Via de Shell kun je verschillende dingen doen. Je kunt bovenstaande commando's uitvoeren, bestanden aanmaken, bestanden verwijderen en nog veel meer. Een belangrijk concept hierbij is hoe het "systeem" (lees : Shell) weet waar de commando's te vinden zijn die je intypt. Hier komt de variabele PATH (zie het deel over de Shell omgeving) om de hoek kijken. Je kunt programma's globaal op twee manieren uitvoeren via de Shell: d.m.v. het opgeven van alleen het commando of door het opgeven van het hele pad (dus waar het programma te vinden is, en het pad begint dan bij de root '/' directorie).
Om programma's te kunnen uitvoeren door alleen de naam van het programma in te geven moet aan de voorwaarde voldaan zijn dat het pad naar dit programma in de PATH variabele is opgenomen. Stel dat een programma, bijvoorbeeld het programma locate, in de directorie /bin staat, dan moet in de variabele PATH dit pad naar deze directory zijn opgenomen. Je kunt dit controleren met het commando echo $PATH. Als je nu een nieuw pad toe wilt voegen aan de PATH variabele, bijvoorbeeld omdat je een nieuw programma hebt geinstalleerd en dit rechtstreeks wilt kunnen uitvoeren, dan kun je het op de volgende manier aan de variabele PATH toevoegen.
$ PATH=$PATH:/usr/bin
Bovenstaand voorbeeld voegt het pad /usr/bin toe aan de PATH variabele.
Om een programma van de huidige directorie uit te voeren, dan volstaat het niet om alleen de naam van het programma op te geven, tenzij de huidige directory opgenomen is in de PATH variabele. Immers, de Shell zoekt alle paden af in de variabele PATH. Als het programma niet gevonden wordt, dan wordt deze ook niet uitgevoerd. Om nu toch een programma uit te kunnen voeren vanuit je huidige directory kun je dat als volgt opgeven:
$ ./programma
Hiermee geef je aan dat je 'programma' uit de huidige directory uit wilt voeren.
Met de tab toets kun je, tenminste met de Bash Shell, een deel van een commando of bestandsnaam of de naam van een pad invullen en de shell de naam zelf af laten maken. Scheelt je soms een hoop typewerk.
Stel, je wilt een programma vanuit je huidige directory uitvoeren. Dit programma heeft de volgende naam : programmaxyz-234.hrl. Nu kun je als volgt de hele naam intypen:
./programmaxyz-234.hrl
Dat is veel typewerk en de kans dat je fouten maakt is groot, zeker met zo'n naam. Nu kun je een deel van de naam intypen, bijvoorbeeld:
./pro
Als je nu op de tab toets drukt, dan kijkt de shell of hij iets kan vinden wat begint met het deel wat je hebt ingevuld. Als dat zo is dan vult de shell de rest van de naam aan.
Nu kan het voorkomen dat je bijvoorbeeld twee programma's hebt met bijna dezelfde naam, bijvoorbeeld programmaxyz-123 en programmaxyz-124. Als je nu weer alleen 'pro' ingeeft en daarna op de tab toets drukt, dan vult de shell aan tot waar er verschillen zijn in de naam. Dus in dit voorbeeld tot :
./programmaxyz-12
Het laatste deel van de naam moet je nu zelf opgeven, in ieder geval tot en met het deel van de naam vanaf waar de shell constateert dat de naam uniek is. Vanaf het moment dat de naam weer uniek is, kun je weer de tab toets gebruiken.
NB : Tab completion geldt niet alleen voor programma's, maar ook voor bestanden, directories, complete paden en dergelijke.