Als je een opdracht in de shell intikt, zal het deze opdracht op je harddisk op moeten zoeken voordat het dit uit kan voeren. Als de shell de hele disk door had moeten zoeken, zou het erg langzaam zijn; Het zoekt in plaats daarvan in een lijst met bestanden die in de omgevingsvariabele PATH staan. Deze lijst met directory's leggen het zoekpad van de shell aan; als je een opdracht invoert, doorzoekt het iedere directory naar het door jou verzochte programma dat moet worden uitgevoerd.
Wellicht dat je de variabele PATH moet wijzigen als je zelf programma's in een niet-standaard lokatie installeert.
De waarde van PATH is een door dubbele punten gescheiden lijst met directory's. De standaardwaarde ervan op Debian-systemen is:
/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games |
Deze waarde is gedefinieerd in het bestand /etc/profile en geldt voor alle gebruikers. Je kunt deze waarde eenvoudig wijzigen, net als je iedere andere omgevingsvariabele wijzigt.
Als je de opdracht ls typt, zal de shell eerst in /usr/local/bin zoeken; ls is daar niet, dus zal het /usr/bin proberen; als dat mislukt, zal het /bin controleren. Daar zal het /bin/ls ontdekken, het zoeken stoppen en het programma /bin/ls uitvoeren. Als /usr/bin/X11/ls bestond (het is niet zo, maar doe even alsof), zou het worden genegeerd.
Je kunt met de opdracht type zien welke ls de shell zal gaan gebruiken. type ls zal als antwoord /bin/ls opleveren --- probeer het zelf.
Probeer te vragen waar type zelf voorkomt:
$ type type type is a shell builtin |
type is eigenlijk geen programma; het is een functie waarin door de shell is voorzien. Je gebruikt het echter net als een extern programma. [1]
Er zijn zo een aantal opdrachten; typ man builtins om de beschrijving in de manpage ervan te lezen. In het algemeen, hoef je niet te weten of een opdracht een ingebouwde opdracht of een echt programma is; ingebouwde opdrachten zullen echter niet in de uitvoer van ps of top verschijnen, aangezien het geen aparte processen zijn. Ze maken slechts onderdeel uit van de shell.
| [1] | Als je een afgeleide van de C-Shell draait, is het equivalente ingebouwde opdracht voor type which. |