In FreeBSD wordt een groot deel van het alledaagse werk
gedaan vanuit een omgeving met een commandoregel die shell heet.
De grootste taak van een shell is om commando's van het
invoerkanaal op te vangen en deze uit te voeren. Veel shells
hebben ook functies ingebouwd om mee te helpen om alledaagse
taken zoals bestandsbeheer, bestandsglobbing, bestanden wijzigen
vanaf de commandoregel, commandomacro's schrijven en uitvoeren en
omgevingsvariabelen instellen en wijzigen. FreeBSD heeft een aantal
shells bijgeleverd zoals sh
, de Bourne Shell
en tcsh
, de verbeterde C-shell. Er zijn veel
andere shells beschikbaar in de FreeBSD Portscollectie zoals
zsh
en bash
.
Welke shell gebruiken? Dit is een kwestie van smaak. Een
C–programmeur voelt zich misschien prettiger bij een
C–achtige shell, zoals tcsh
. Een
voormalig Linux® gebruiker of iemand die niet veel ervaring
heeft met een UNIX® commandoregel interface wil misschien
bash
proberen. Elke shell heeft zijn eigen
unieke eigenschappen die wel of niet werken voor een bepaalde
gebruiker.
Een standaard optie in een shell is bestandsnaam completie.
Door het intikken van de eerste paar letters van een commando of
bestandsnaam, kan de shell opdracht gegeven worden om automatisch
de rest het commando of bestandsnaam toe te voegen met de
Tab toets op het toetsenbord. Stel dat er twee
bestanden zijn met de namen foobar
en
foo.bar
en foo.bar
moet
verwijderd worden. Dan kan op het toetsenbord
rm fo[Tab].[Tab]
ingevoerd worden.
De shell geeft rm foo[BEEP].bar
weer.
De [BEEP] geeft aan dat de shell in staat was om de
bestandsnaam te completeren omdat er meer dan één
soortgelijk bestand was. foobar
en
foo.bar
beginnen met fo
,
maar het was in staat om het af te maken tot
foo
. Na het invoeren van een
.
en daarna Tab, is de shell
in staat om de rest van de bestandsnaam aan te vullen.
Een andere optie van de shell is het gebruik van omgevingsvariabelen. Omgevingsvariabelen zijn variabele sleutelparen die opgeslagen zijn in de omgevingsruimte van een shell. Deze ruimte kan uitgelezen worden door elk programma dat door de shell wordt uitgevoerd en bevat dus veel programmainstellingen. Hieronder staat een lijst van standaard omgevingsvariabelen en wat ze betekenen:
Variabele | Omschrijving |
---|---|
USER | Gebruikersnaam van de gebruiker die is aangemeld. |
PATH | Een lijst van mappen, gescheiden door een
: voor het zoeken naar binaire
bestanden. |
DISPLAY | Netwerknaam van het X11 scherm om verbinding mee te maken, indien beschikbaar. |
SHELL | De huidige shell. |
TERM | De naam van de huidige gebruikersterminal. Gebruikt om de mogelijkheden van de terminal te bepalen. |
TERMCAP | Databaseregel met terminal escape codes voor het uitvoeren van diverse terminalfuncties. |
OSTYPE | Type besturingssysteem, bijvoorbeeld FreeBSD. |
MACHTYPE | De CPU architectuur waar het systeem op draait. |
EDITOR | De teksteditor waar de gebruiker de voorkeur aan geeft. |
PAGER | De tekstpager waar de gebruiker de voorkeur aan geeft. |
MANPATH | Lijst van mappen gescheiden door een
: voor het zoeken naar
handleidingen. |
Het instellen van omgevingsvariabelen verschilt van shell tot
shell. In de C–achtige shells zoals
tcsh
en csh
moet
setenv
gebruikt worden om omgevingsvariabelen
in te stellen. In Bourne-shells zoals sh
en
bash
moet export
gebruikt
worden om de omgevingsvariabelen in te stellen. Om bijvoorbeeld
de omgevingsvariabele EDITOR
te wijzigen naar
/usr/local/bin/emacs
onder
csh
of tcsh
moet het
volgende gedaan worden:
%
setenv EDITOR /usr/local/bin/emacs
In Bourne shells is dat:
%
export EDITOR="/usr/local/bin/emacs"
Met de meeste shells kunnen de omgevingsvariabelen ook
weergegeven worden door een $
karakter voor
de variabelenaam te plaatsen op de commandoregel.
echo $TERM
zou weergeven wat er in
$TERM
gezet is, omdat de shell
$TERM
uitbreid en het resultaat doorgeeft aan
echo
.
Shells kennen veel speciale karakters, die meta-karakters
heten, als speciale weergaves van data. De meest voorkomende is
het karakter *
karakter, dat elk
karakter in een bestandsnaam voorstelt. Deze speciale
meta-karakters kunnen gebruikt worden om bestandsnaamglobbing te
doen. Door bijvoorbeeld echo *
in te voeren,
is het resultaat bijna hetzelfde als door het uitvoeren van
ls
, omdat de shell alle bestanden die
van toepassing zijn aan echo geeft om ze daarna te tonen.
Om te voorkomen dat de shell deze speciale tekens
verwerkt, kunnen ze uitgeschakeld worden door er het backslash
karakter (\
) voor te plaatsen.
echo $TERM
print de inhoud van TERM naar het
scherm. echo \$TERM
print $TERM zoals het
geschreven is.
De makkelijkste manier om de shell te wijzigen is
door het chsh
commando te gebruiken.
Door chsh
te starten wordt de editor gestart
die in de EDITOR
omgevingsvariable staat. Als
deze niet is ingesteld, wordt vi
gestart. In de editor kan de regel waarop
“Shell:” staat gewijzigd worden.
Aan chsh
kan ook de optie
-s
meegegeven worden. Dit stelt de shell in,
zonder dat een editor gebruikt hoeft te worden. Als de shell
bijvoorbeeld gewijzigd moet worden in bash
,
kan dat als volgt:
%
chsh -s /usr/local/bin/bash
De te gebruiken shell moet
geregistreerd zijn in /etc/shells
. Als
een shell uit de Portscollectie
is geïnstalleerd, is dit meestal automatisch gebeurd.
Als de shell met de hand is geïnstalleerd moet het
onderstaande gedaan worden.
Als bijvoorbeeld bash
met de hand
geïnstalleerd is in /usr/local/bin
,
dient het onderstaande te gebeuren:
#
echo "/usr/local/bin/bash" >> /etc/shells
Hierna kan chsh
weer gedraaid
worden.