Von der tagtäglichen Arbeit mit FreeBSD wird eine Menge
mit der Kommandozeilen Schnittstelle der Shell erledigt. Die
Hauptaufgabe einer Shell besteht darin, Kommandos der Eingabe
anzunehmen und diese auszuführen. Viele Shells haben
außerdem eingebaute Funktionen, die die tägliche
Arbeit erleichtern, beispielsweise eine Dateiverwaltung,
die Vervollständigung von Dateinamen (Globbing), einen
Kommandozeileneditor, sowie Makros und Umgebungsvariablen. FreeBSD
enthält die Shells sh
(die Bourne Shell) und
tcsh
(die verbesserte C-Shell) im Basissystem.
Viele andere Shells, wie zsh
oder
bash
, befinden sich in der Ports-Sammlung.
Welche Shell soll ich benutzen? Das ist wirklich eine
Geschmacksfrage. Sind Sie ein C-Programmierer, finden Sie
vielleicht eine C-artige Shell wie die tcsh
angenehmer. Kommen Sie von Linux oder ist Ihnen der Umgang mit UNIX® Systemen
neu, so könnten Sie die bash
probieren.
Der Punkt ist, dass
jede Shell ihre speziellen Eigenschaften hat, die mit Ihrer
bevorzugten Arbeitsumgebung harmonieren können oder nicht.
Sie müssen sich eine Shell aussuchen.
Ein verbreitetes Merkmal in Shells ist die
Dateinamen-Vervollständigung. Sie müssen nur einige
Buchstaben eines Kommandos oder eines Dateinamen eingeben und
die Shell vervollständigt den Rest automatisch durch
drücken der Tab-Taste. Hier ist ein Beispiel.
Angenommen, Sie
haben zwei Dateien foobar
und
foo.bar
. Die Datei
foo.bar
möchten Sie löschen. Nun
würden Sie an der Tastatur eingeben:
rm fo[Tab].
[Tab]
.
Die Shell würde dann rm
foo[BEEP].bar
ausgeben.
[BEEP] meint den Rechner-Piepser. Diesen gibt die Shell
aus, um anzuzeigen, dass es den Dateinamen nicht
vervollständigen konnte, da es mehrere Möglichkeiten
gibt. Beide Dateien foobar
und
foo.bar
beginnen mit fo
,
so konnte nur bis foo
ergänzt werden.
Nachdem Sie .
eingaben und dann die
Tab-Taste
drückten, konnte die Shell den Rest für Sie
ausfüllen.
Ein weiteres Merkmal der Shell ist der Gebrauch von Umgebungsvariablen. Dies sind veränderbare Schlüsselpaare im Umgebungsraum der Shell, die jedes von der Shell aufgerufene Programm lesen kann. Daher enthält der Umgebungsraum viele Konfigurationsdaten für Programme. Die folgende Liste zeigt verbreitete Umgebungsvariablen und was sie bedeuten:
Variable | Beschreibung |
---|---|
USER | Name des angemeldeten Benutzers. |
PATH | Liste mit Verzeichnissen (getrennt durch Doppelpunkt) zum Suchen nach Programmen. |
DISPLAY | Der Name des X11-Bildschirms, auf dem Ausgaben erfolgen sollen. |
SHELL | Die aktuelle Shell. |
TERM | Name des Terminaltyps des Benutzers. Benutzt, um die Fähigkeiten des Terminals zu bestimmen. |
TERMCAP | Datenbankeintrag der Terminal Escape Codes, benötigt um verschieden Terminalfunktionen auszuführen. |
OSTYPE | Typ des Betriebsystems, beispielsweise FreeBSD. |
MACHTYPE | Die CPU Architektur auf dem das System läuft. |
EDITOR | Vom Benutzer bevorzugter Text-Editor. |
PAGER | Vom Benutzer bevorzugter Text-Betrachter. |
MANPATH | Liste mit Verzeichnissen (getrennt durch Doppelpunkt) zum Suchen nach Manualpages. |
Das Setzen von Umgebungsvariablen funktioniert
von Shell zu Shell unterschiedlich. Zum Beispiel benutzt man
in C-artigen Shells wie der tcsh
dazu
setenv
. Unter Bourne-Shells wie sh
oder bash
benutzen Sie zum Setzen von
Umgebungsvariablen export
. Um
beispielsweise die Variable EDITOR
mit
csh
oder tcsh
auf
/usr/local/bin/emacs
zu setzen, setzen Sie das
folgende Kommando ab:
%
setenv EDITOR /usr/local/bin/emacs
Unter Bourne-Shells:
%
export EDITOR="/usr/local/bin/emacs"
Sie können die meisten Shells Umgebungsvariablen
expandieren lassen, in dem Sie in der Kommandozeile ein
$
davor eingeben. Zum Beispiel gibt
echo $TERM
aus, worauf $TERM
gesetzt ist, weil die Shell $TERM
expandiert
und das Ergebnis an echo
gibt.
Shells behandeln viele Spezialzeichen, so genannte
Metazeichen, als besondere Darstellungen für Daten.
Das allgemeinste ist das Zeichen *
, das eine
beliebige Anzahl Zeichen in einem Dateinamen repräsentiert.
Diese Metazeichen können zum Vervollständigen von
Dateinamen (Globbing) benutzt werden. Beispielsweise liefert
das Kommando echo *
nahezu das gleiche
wie die Eingabe von ls
, da die Shell alle
Dateinamen die mit *
übereinstimmen, an
echo
weitergibt.
Um zu verhindern, dass die Shell diese Sonderzeichen
interpretiert, kann man sie schützen, indem man ihnen einen
Backslash (\
) voranstellt. echo
$TERM
gibt aus, auf was auch immer Ihr Terminal
gesetzt ist. echo \$TERM
gibt
$TERM
genauso aus, wie es hier steht.
Der einfachste Weg Ihre Shell zu ändern, ist das
Kommando chsh
zu benutzen.
chsh
platziert Sie im Editor, welcher durch
Ihre Umgebungsvariable EDITOR
gesetzt ist,
im vi
wenn die Variable nicht gesetzt ist.
Ändern Sie die Zeile mit „Shell:“
entsprechend Ihren Wünschen.
Sie können auch chsh
mit der Option
-s
aufrufen, dann wird Ihre Shell gesetzt,
ohne dass Sie in einen Editor gelangen. Um Ihre Shell
zum Beispiel auf die bash
zu ändern,
geben Sie das folgende Kommando ein:
%
chsh -s /usr/local/bin/bash
Die von Ihnen gewünschte Shell
muss in /etc/shells
aufgeführt sein. Haben Sie eine Shell aus der
Ports-Sammlung installiert,
sollte das schon automatisch erledigt werden. Installierten
Sie die Shell von Hand, so müssen Sie sie dort
eintragen.
Haben Sie beispielsweise die bash
nach
/usr/local/bin
installiert, geben Sie
Folgendes ein:
#
echo "/usr/local/bin/bash" >> /etc/shells
Danach können Sie chsh
aufrufen.
Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an
<de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an
<de-bsd-translators@de.FreeBSD.org>.