Wer auf einem Linux-Desktopsystem arbeitet, gelangt meist sofort nach dem booten in die grafische Oberfläche. Mit der Textkonsole kommt man im ersten Moment gar nicht in Berührung. Was erwartet einen nun in der weiten Welt hinter den bunten Fenstern? Wer in einer grafischen Oberfläche arbeitet hat 2 Möglichkeiten an eine Shell zu kommen:

Zum einen gibt es Shellfenster innerhalb der grafischen Oberfläche. Unter KDE kann man z. B. das Programm Konsole benutzen, dessen Symbol bei KDE 3 auch das Titelsymbol dieser Seite ist. Unter Gnome gibt es das Gnome-Terminal und unter anderen Windowmanagern zumindest Xterm. Darüber hinaus gibt es noch weitere grafische Shellfenster mit netten Effekten wie etwa transparente Hintergründe etc. wie etwa aterm, eterm und andere. Die andere Möglichkeit besteht darin, die grafische Oberfläche komplett zu verlassen. Letzteres geschieht durch die Tastenkombination Strg+Alt+F2. Wenn Sie diese Tastenkombination eingegeben haben, verschwindet Ihr ganzer Desktop und ein Eingabeprompt erscheint, der Sie auffordert sich anzumelden.

Linux besitzt per Voreinstellung 6 virtuelle Textkonsolen, die gleichzeitig nebeneinander laufen. Diese lassen sich jeweils mit Alt und der entsprechenden F-Taste (F1 - F6) wechseln. Benutzt man gar keinen grafischen Modus stehen einem nur diese 6 Textkonsolen zur Verfügung. Im grafischen Modus wird jedoch die 1. Textkonsole dazu benutzt, den grafischen Desktop zu starten. Die erste Textkonsole ist daher mit diesem Programm belegt und sie werden dort nur für den unkundigen wirre Textausgaben finden, die vom X-Server (gewissermaßen der Grafikkartentreiber) stammen. Der grafische Desktop selbst legt sich daher auf die siebte Konsole, die bislang undefiniert blieb. Aus einer grafischen Umgebung heraus muß statt Alt+F(1-6) jedoch Strg+Alt+F(1-6) gedrückt werden, da Alt+F(1-6) in einer grafischen Umgebung andere Bedeutungen haben kann.

Aus unserer Textkonsole in die wir mit Strg+Alt+F2 gelangt sind können wir nun mit Strg+Alt+F7 nun wieder zurück in die grafische Oberfläche. Der Weg die grafische Oberfläche ganz zu verlassen ist der unüblichere. Meist wird man innerhalb der grafischen Umgebung ein Shellfenster aufrufen. Wenn wir dies nun machen, begrüßt uns wiederum ein Eingabeprompt, aber wir müssen uns nicht mehr extra anmelden, da wir dies bereits in der grafischen Oberfläche schon getan haben:

Was bedeutet nun: "rene@thor~>"? Die Shell meldet sich mit dem Benutzernamen mit dem man angemeldet ist (in diesem Fall rene) und hinter dem @ mit dem Hostnamen des Rechners. Was ungefähr bedeutet: rene auf thor angemeldet. Diese Information kann von daher relevant sein, weil man sich auch sehr einfach auf der Textkonsole eines entfernten Rechners anmelden kann. Dadurch kann man immer feststellen auf welchen System man seine Kommandos eingibt. Das Zeichen ~ steht in diesem Fall für das Verzeichnis in dem man sich momentan befindet. Das ~ (Tilde-Zeichen) steht als Abkürzung und Synonym für das Homeverzeichnis, in diesem Fall also /home/rene. Die Shell startet immer automatisch im Homeverzeichnis. Ob dieser Verzeichnispfad angezeigt wird, ist jedoch wiederum Einstellungssache der jeweiligen Shell.

Die Shell anpassen

Wie passe ich mir nun meine Shell an? Es gibt mehrere Dateien, die die Arbeit der Shell beeinflußen. Die beiden wichtigsten dürften /etc/profile und ~/.bashrc sein. Die /etc/profile Datei legt einige generelle Umgebungsparameter fest, die nicht nur für die Bash, sondern generell und systemweit gelten. Diese Datei darf daher nur vom Benutzer root geändert werden. Normale Benutzer haben lediglich Leserechte auf die Datei.

Exkurs: Dateirechte

In dieser Datei wird z. B. auch der umask-Wert definiert. Dies ist der Vorgabewert für die Standard-Dateiberechtigung für neu angelegte Dateien. Auf einem Desktopsystem ist dies meist auf 022 festgelegt. Dies bedeutet das der Zahlenwert für die Berechtigung bestimmt wird in dem an der ersten Stelle nichts abgezogen und an der zweiten und dritten Stelle jeweils die 2 abgezogen wird. Häh? Abgezogen von was? Dateiberechtigungen werden jeweils vergeben für den Besitzer der Datei, der Gruppe zu der die Datei gehört, und dem Rest der Welt. Daraus ergeben sich also 3 Werte. Dieser Wert kann durch Zahlen oder durch Buchstaben ausgedrückt werden. Es gibt die Rechte Lesen, Schreiben und Ausführen. In Buchstaben: Lesen=r (read), Schreiben=w (write) und Ausführen=x (execute). Dies verteilt auf die 3 Arten von Rechteinhabern kann so aussehen: rwxrwxrwx, was bedeutet das jeder alles darf, oder z. B. rw-r--r--. In diesem Fall darf der Besitzer sowohl Lesen als auch Schreiben, während alle anderen nur Lesen dürfen. Bei Ordnern bedeutet das Ausführungsrecht, das Recht den Ordner zu öffnen. Das Ausführungsrecht bei Dateien muß erst extra vergeben werden, da normalerweise Dateien nicht ausgeführt werden sollen, außer es handelt sich um ein Script, das man gerade selbst programmiert hat. Installierte Programme werden automatisch mit dem Ausführungsrecht installiert. Dateien werden daher mit den Rechten rw-rw-rw- angelegt und Ordner mit rwxrwxrwx. Dieser Wert wird durch umask verändert. In Zahlen steht Lesen für die 4, Schreiben für die 2 und Ausführen für die 1. Diesen Wert kann man nun pro Rechteinhaber hintereinander aufführen. aus rwxrwxrwx wird dann 777 oder aus rw-r--r-- wird 644. Der umask-Wert wird nun von jeder neu angelegten Datei und jedem neu angelegten Ordner abgezogen, also z. B. eine Datei rw-rw-rw-, also 666 minus umask 022 ergibt 644, also rw-r--r--.

Für jeden Benutzer zugänglich und beschreibbar sind die Daten in seinem Homeverzeichnis, welches sowohl alle persönlichen Konfigurationseinstellungen, als auch zumeist die selbsterstellten Dateien, wie etwa Texte und Bilder beherbergt. Konfigurationseinstellungen, die nicht systemweit gelten, sondern für den jeweiligen Benutzer werden meist in versteckten Dateien innerhalb des Homeverzeichnisses hinterlegt. Dazu gehören auch die Dateien .bashrc, .profile und .bash_profile. Versteckte Dateien werden zu solchen indem sie am Anfang einen Punkt im Dateinamen haben.

Der Unterschied zwischen diesen drei Dateien, liegt darin, wann sie verarbeitet werden. Die Datei .profile und .bash_profile werden von einer Login-Shell verarbeitet, während die .bashrc von Nicht-Login-Shells verarbeitet werden. Was ist eine Nicht-Login-Shell und was eine Login-Shell? Wenn Sie sich im Textmodus anmelden, landen sie direkt in einer Login-Shell. Eine Login-Shell ist also die Shell die sich unmittelbar nach dem anmelden öffnet. Wenn Sie innerhalb dieser Shell eine Subshell öffnen befinden sie sich in einer interaktiven Shell. Der Unterschied zwischen den Dateien .profile und .bash_profile liegt zum einen darin, das die .profile-Datei nicht nur von der Bash, sondern auch von anderen Shells, wie etwa der ksh genutzt wird, während die bash_profile nur von der Bash ausgewertet wird. Außerdem wird die .profile Datei gar nicht mehr ausgewertet, wenn eine .bash_profile existiert.

Was kann ich nun in meine .bashrc eintragen? Zum einen lassen sich sogenannte Aliase festlegen. Ein Beispiel: Das Kommando ls zeigt den Verzeichnisinhalt an. Standardmäßig werden versteckte Dateien dabei nicht angezeigt. Sie möchten jedoch das versteckte Dateien immer mit angezeigt werden. Mit dem Parameter -a zeigt Ihnen ls auch die versteckten Dateien. Wenn ls dies jedoch immer machen soll, können Sie in Ihrer .bashrc einen Alias dafür definieren: alias ls="ls -a". Wenn Sie dies als zusätzliche Zeile in Ihrer .bashrc angeben, wird von nun an das Kommando ls so arbeiten als hätten sie ls -a eingegeben. Wie Sie in der Shell einen Texteditor nutzen können, wird auf der Seite Editoren erklärt. Was aber wenn Sie doch mal die normale Ausgabe von ls möchten? Kein Problem: Geben Sie \ls an. Der Backslash läßt jedes Kommando wieder normal ausführen. Wenn Sie den Alias erst frisch in Ihre .bashrc eingetragen haben, werden Sie feststellen, das es noch nicht funktioniert. Die .bashrc wird erst beim nächsten starten des Shellfensters neu ausgelesen. Bis dahin können sie die selbe Zeile aber auch in der Shell selbst angeben:

rene@thor:~> alias ls="ls -a"

Neben Aliasen können Sie auch Beispielsweise Umgebungsvariablen in der .bashrc anpassen. Eine Umgebungsvariable ist ein Wert der von manchen Programmen benötigt wird, wie etwa der Pfad zum Homeverzeichnis oder der Pfad in dem ausführbare Dateien liegen. Ein Beispiel aus der Praxis: Sie programmieren manchmal einfache Shellscripte und möchten, wenn sie diese aufrufen nicht jedesmal den gesamten Pfadnamen mit angeben müssen. Der Aufruf des Namens des Shellscripts soll genügen. Daher ergänzen Sie die Umgebungsvariable "PATH" in der die Pfade für ausführbare Programme angegeben sind. Dies funktioniert durch die Zeile:

rene@thor:~> export PATH=$PATH':~/bin'

Um diese Einstellung dauerhaft zu behalten, fügen Sie die Zeile auch einfach wieder in Ihre .bashrc ein. Mit export können Sie eine Variable als Umgebungsvariable exportieren. Variablen werden mit dem $-Zeichen angesprochen. Wir schreiben also in die Variable PATH, zuerst den alten Wert von PATH (damit dieser auch noch weiterhin gilt) und ergänzen ihn um den Pfad ~/bin. Wenn Sie nun alle Ihre Scripte innerhalb Ihres Homeverzeichnisses (~) in das Verzeichnis bin legen, können diese einfach mit Ihrem Dateinamen ausgeführt werden.

Programme im Hintergrund laufen lassen

Wenn Sie einen Befehl absetzen, der eine gewisse Verarbeitungszeit benötigt, und parallel dazu auch noch andere Kommandos ausführen möchten, ist es praktisch einen Prozeß im Hintergrund laufen zu lassen. Dies können Sie mit dem Symbol &. Ein Beispiel: Sie möchten ein Tar-Archiv mit 500 MB packen. Dies dauert ein wenig. Tar-Archive sind Dateien in denen viele andere Dateien verpackt sind. Die Dateien die Sie verpacken wollen, befinden sich in dem Unterverzeichnis "test". Sie können nun eingeben:

rene@thor:~> tar cf test.tar test

Was dazu führt, daß Sie warten müssen bis der Befehl beendet wurde, damit Sie wieder Ihren Prompt bekommen und weitere Befehle eingeben können. Daher hängen Sie das & an:

rene@thor:~> tar cf test.tar test &

Nun erhalten Sie Ihren Prompt sofort wieder und können während tar im Hintergrund läuft andere Befehle ausführen.

Hilfe!

Was nun wenn ich mir die Syntax mit sämtlichen Parametern zu einem Befehl nicht merken kann. Kann mir die Shell auf die Sprünge helfen? Ja, das kann Sie. Hierzu kennen die meisten Befehle eine Hilfefunktion, die meist durch den Parameter -h oder --help angezeigt wird. Dies ist praktisch wenn Sie z. B den Befehl zwar noch im Kopf haben, aber die Syntax der Parameter nicht mehr wissen. Versuchen Sie z. B. mal:

rene@thor:~> ls --help

Sie werden sehen wie viele Parameter der Befehl ls kennt, die wir hier nicht erwähnt haben.

Etwas ausführlichere Informationen zu einem Befehl erhalten Sie mit man. man steht für Manual. Die Handbuchseiten eines Befehls sozusagen. Geben Sie man ls ein und Sie sehen die Handbuchseite des Befehls ls. Mit man man bekommen Sie eine Hilfe zu den Man-Pages selber.

Neben den Man-Pages gibt es zu einigen Befehlen noch die Info-Pages. Dies kann man als alternatives System zu den Man-Pages betrachten. Programme aus dem GNU-Projekt bevorzugen meist Ihre Dokumentation in Infoseiten zu hinterlegen. Meist wird jedoch auch eine Man-Page angelegt, damit das fehlen einer solchen nicht als Fehler gemeldet wird. In so einem Fall finden Sie in der Man-Page des Befehls den Hinweis, das ausführlichere Informationen zum Befehl in der Infoseite zur Verfügung stehen. Infoseiten können mit dem Befehl info aufgerufen werden. Z. B.: info tar zeigt die Infoseite zum Befehl tar.

Der Befehl man benützt übrigens den vom System voreingestellten Pager zur Anzeige. Die Bedienung innerhalb der Manpages entspricht also der des Pagers.

Zurück nach oben
Shell mit Kommandoprompt