Shell
- Shells
-
Sind Programme/Kommandos wie andere UNIX-Kommandos, mit der Besonderheit, daß im Kommandomodus immer eine sog. Login-Shell aktiv ist!
Eine Shell ist ein Kommando-Interpreter und somit auch als Programmiersprache nutzbar ( siehe Kurs Shell-Programmierung )- Verschiedene Shells
-
- bash - GNU Bourne-Again Shell (Standard-Shell)
für interaktive Nutzung sowie Programmierung geeignet- tcsh - Turbo C-Shell
für interaktive Nutzung geeignet (zweite vom URZ unterstützte Shell)
(file name expansion, command line editing)- csh - C-Shell
der Programmiersprache C angelehnte Shell- sh - Bourne Shell
für Programmierung empfohlen
- Aktivierung/uni/global/bin/tcsh
-
- automatisch über den Nutzereintrag in /etc/passwd
siehe letztes Feld --> /uni/global/bin/bash oder /uni/global/bin/tcsh- durch Aufruf eines Kommandos (hinter dem sich ein Shell-Programm verbirgt)
z.B.: prompt: bash
(siehe Prozeßhierarchie)
- Konfiguration der Nutzerumgebung
-
- Umgebungsvariablen
-
Kommando env --> liefert aktuelle Umgebung (environment)
z.B.: folgende Variablen gesetzt: MAIL, HOME, EDITOR, PWD, LOGNAME, TERM, ENV, ...Anzeigen einer Variable: echo $MAIL $EDITOR
--> $ bewirkt VariablensubstitutionArt der Variablendefinition sowie Variablennamen sind abhängig von der verwendeten Shell (siehe Beschreibung)
Beispiel für Variable PATH (ein Kommando wird nur in den Verzeichnissen gesucht, die in PATH angegeben sind) verändern:
setenv PATH ${PATH}:/usr/home/privatbin # gilt für tcsh
PATH=${PATH}:/usr/home/privatbin # gilt für bash
Variable wird gesetzt oder ein Wert zugewiesen
(ignoreeof --> EOF ignorieren (<CTRL D> ), noclobber --> Fehlermeldung, wenn bei Ausgabeumlenkung File existiert --> explizits Überschreiben mit ! nötig)
- Startup-Files
-
Bei Aktivierung einer Shell können Variablen mit Standardwerten belegt werden, mit Hilfe sog. Startup-Files. Diese werden beim Programmstart (Shell-Start) gelesen/ausgwertet!
z.B. $HOME/.login, $HOME/.cshrc, $HOME/.profile, ...Dieser Mechanismus wird auch für andere UNIX-Programme genutzt, wie netscape (.netscape), vi (.virc), X (.xinitrc, ...), news (.newsrc), pine (.pinerc), ...
- Aufruf eines Kommandos
-
Das erste Wort einer Eingabezeile wird als Kommandoname interpretiert.
Die Shell sucht das zugehörige ausführbare File in allen in Variable PATH definierten Verzeichnissen.Fehlerquellen:
- Kommandoname falsch geschrieben
Achtung! UNIX arbeitet case sensitiv, es wird zwischen Groß- und Kleinbuchstaben unterschieden. - das kommandoenthaltende Verzeichnis fehlt in Variable PATH
- Kommandoname falsch geschrieben
- job-control
-
- Komando job --> Anzeige der im Hintergrunf laufenden Prozesse ( siehe Pkt. Prozesse --> & )
-
Ein solcher Hintergrundprozeß kann mittels fg %id in den Vordergrund geholt werden.
Ein im Vordergrund laufender (Interaktivitäten blockierender) Prozeß kann mittles suspend-Signal in den Hintergrund "geschoben" werden: <CTRL Z> sowie Kommando bg (letzteres zur Aktivierung dieses Prozesses --> Einordnung in die run-queue --> Bewerbung um CPU-Ressource)

Zur Homepage des URZ Christoph Ziegler, letzte Änderung 25.02. 1999