Home / LinuxUser / 2000 / 06 / Shell-Tipps

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(161 Punkte bei 4 Stimmen)
Mandriva in Nöten
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

(Un)geliebte Shell

Shell-Tipps

Mal eine andere Shell

Anwender können die ihnen beim Systemstart zur Verfügung stehende Login-Shell jederzeit wechseln. So genügt es, eine andere Shell zu starten, um mit dieser arbeiten zu können:

$>  echo  $BASH_VERSION
2.03.0(1)-release
$>  zsh
$>  echo  $BASH_VERSION

Hier wird die Shell durch die Variable $BASH_VERSION identifiziert, die - natürlich nur bei einer Bash - den Versions-String der aktuellen Shell enthält. Verlassen wird diese Shell durch den Befehl exit.

Dauerhaft kann der Anwender seine Login-Shell mit dem Befehl chsh (change shell) ändern:

$>  chsh
Password:
Changing the login shell for LinuxUser
Enter the new value, or press return for the default
            Login  Shell  [/bin/bash]:

Distributions- und systemabhängig wird zunächst nach dem Passwort des Anwenders gefragt, bevor er eine neue Shell (mit dem gesamten Pfad!, also zuvor ausprobieren) angibt. In der Datei /etc/login.defs wird durch das Schlüsselwort "CHFN_AUTH" festgelegt, ob vor dem Wechsel der Login-Shell nach dem Passwort gefragt wird. Anwender haben Zugriff auf alle Shells, die in der Datei /etc/shells aufgeführt sind. Dabei können auch sogenannte eingeschränkte (restricted) Shells in dieser Liste aufgeführt sein. Bei einer "restricted shell" sind einige Möglichkeiten, die normalerweise zur Verfügung stehen, aus Sicherheitsgründen deaktiviert. So ist in der Regel kein Verzeichniswechsel mehr möglich, auch können Programme nicht mehr durch die Eingabe eines absoluten Pfades gestartet werden. Weitere Einschränkungen hängen von der Shell ab. Außerdem können restricted Shells nicht mehr verlassen werden. Die Bash agiert als "restricted Bash", wenn sie mit der Option -r aufgerufen wird.

Blick zurück, nach vorn

Die erste Shell unter Unix wurde nach ihrem Entwickler Bourne benannt. Sie ist heute als Standard-Shell unter dem Namen sh auf nahezu allen Systemen verfügbar oder wird von anderen Shells emuliert. Die ursprüngliche Bourne-Shell war nicht sehr komfortabel und verfügte nur über einen Bruchteil der Features moderner Shells. Von der Bedienung entsprach sie etwa dem COMMAND.COM-Interpreter unter DOS. Kein Wunder also, dass es bald mehrere Projekte gab, die versuchten, "bessere" Shells zu entwickeln. Als sehr anwenderfreundlich hat sich die ksh (Korn Shell) herausgestellt; eine freie Variante dieser Shell ist unter Linux mit dem Namen pdksh (oder ksh) verfügbar. Eine besonders für Programmierer interessante Shell ist die C-Shell; sie verfügt über eine an die Konventionen dieser Programmiersprache angepasste Syntax. Heute wird überwiegend die Weiterentwicklung der klassischen C-Shell eingesetzt, die unter dem Namen tcsh auf vielen Systemen installiert ist. Unter Linux hat sich dagegen eine andere Shell durchgesetzt: die Bourne Again SHell, kurz "Bash", Programmname bash. Sie vereinigt viele Features der Korn- und der C-Shell, steht unter der GPL und ist auf vielen Rechnern (und nicht nur unter Linux) verfügbar. Ihre Entwickler Brian Fox und Chet Ramey pflegen dieses inzwischen sehr umfangreiche Programm seit vielen Jahren, momentan ist die Version 2.0.5 aktuell. Ein anderer Artikel in diesem Heft geht auf diese Shell näher ein.

Viele neue Shells sind in den letzten Jahren entstanden. Sie sind alle mehr oder weniger kompatibel zur ursprünglichen Bourne Shell. Die Bash emuliert beispielsweise eine Bourne Shell, wenn sie unter dem Programmnamen sh gestartet wurde. (Aber Achtung: Nicht alle Erweiterungen der Bash werden in diesem Modus wirklich deaktiviert, so dass das Verhalten dieser Shell von dem einer echten Bourne Shell abweichen kann.) Eine der leistungsfähigsten Shells, die heute in vielen Linux-Distributionen enthalten ist, ist übrigens die Z-Shell (zsh) von Paul Falstad. Inzwischen wurden auch eine Reihe von "interaktiven" Shells entwickelt, die - ähnlich dem unter DOS bekannten "Norten Commander" - für einfache Aufgaben bei der Manipulation von Dateien eingesetzt werden können.

Abbildung 2: Der Midnight Commander stellt eine "interaktive" Shell dar.

Shells im Überblick

Shell

Name und Eigenschaften

sh Bourne-Shell: das Original wird unter Linux nur durch einen Link realisiert
ash (Almquist Shell) ist ein einfacher Bourne-Shell Clone, der über keine Editierfunktionen für die Befehlszeile verfügt, wenig zusätzliche Features
sash Diese statisch gelinkte Shell enthält eine Reihe von eingebauten Befehlen: chgrp, chmod, chown, cmp, cp, dd, echo, ed, grep, gunzip, gzip, kill, ln, ls, mkdir, mknod, more, mount, mv, printenv, pwd, rm, rmdir, sync, tar, touch, umount, where
rsh restricted" Bourne-Shell, diese eingeschränkte Shell wird als Link auf die Bash realisiert und bietet dem Anwender nur begrenzte Möglichkeiten
csh C-Shell: die Berkeley-Version der sh. Erweiterte Funktionen, eine Befehlszeilenhistory und gute Programmierumgebung im C-Stil, aber keine Editierfunktionen für die Befehlszeile
tcsh Tenex-C-Shell (erweiterte C-Shell): die heute unter Linux verwendete Variante der Csh, mit Editierfunktionen für die Befehlszeile
ksh Korn-Shell: diese komfortable Shell wird unter Linux als Link auf pdksh realisiert. Kompatibel zur sh, mit guten Editierfunktionen für die Befehlszeile und Jobmanagement
rksh "restricted" Korn-Shell: eingeschränkte Version der K-Shell
bash Bourne-Again Shell: Standard-Shell unter Linux, vereinigt die Funktionen der K-Shell, C-Shell und weitere.
zsh Z-Shell: Eine moderne und komfortable Shell, kompatibel zur sh, mit wesentlich erweiterten Funktionen
git GNU Interactive Tool
mc Midnight Commander
fr File Runner
tkdesk NeXT-ähnlicher Datei-Manager
tkworld Versuch einer "grafischen Shell"
uc Unix Commander, grafische Shell

Tabelle 1: Eine Übersicht der bekanntesten Shells unter Linux. Bei den im unteren Teil genannten Shells handelt es sich um "interaktive Shells" (Datei-Manager).

Fazit

Wie Sie gesehen haben, stellen Shells eine sehr universelle Möglichkeit zur Arbeit mit dem System dar. Nach einigen Erfahrungen werden Sie schnell merken, dass Sie beim Einsatz einer Shell eine Menge Arbeit sparen können und Ihnen dabei noch wesentlich mehr Möglichkeiten zur Verfügung stehen, als wenn Sie sich nur auf die grafischen Tools beschränken. Nicht "Desktop oder Shell" ist die Devise sondern "Desktop und Shell". Damit Ihnen der Umgang mit der Bash leichter fällt, werden deren Editierfunktionen im folgenden Artikel genauer beschrieben.

Glossar

Environment

Eine Anzahl von (Environment-) Variablen, deren Inhalt dem Prozess Informationen über die Umgebung geben, in der sich die Ausführung abspielt. So ist im Environment der Typ der Shell gespeichert, die den Prozess gestartet hat, das Terminal mit dem er verbunden ist und vieles mehr. Das Environment kann mit dem Befehl printenv angezeigt werden, env modifiziert es. Einzelne Variablen können mit den Shell-Befehlen (declare oder export auf der Bash oder setenv bei der C-Shell) eingestellt werden.

Prozess

Ein gerade laufendes Programm wird unter Linux als "Prozess" bezeichnet. Zu einem Prozess gehören neben der ausführbaren Datei noch weitere Informationen: das Environment, Daten über den Prozess selbst und über den Prozess, von dem er abstammt. Prozesse werden über die ihnen zugeordnete Prozessidentifikationsnummer (PID) identifiziert, nicht etwa über den Programmnamen. Programme sind unter Linux einfach ausführbare Dateien, also binäre (compilierte) Programm oder interpretierte Skripte. Die Ausführbarkeit einer Datei wird anhand des "x"-Bits bei den Dateiattributen festgestellt und festgelegt.

Muster

Ein Muster (oder englisch: Pattern) ist ein Dateiname, der Joker-Zeichen wie z. B. die auch von DOS bekannten Wildcards "*" und "ß" enthält. Unix-Systeme kennen noch zusätzliche Möglichkeiten für die Auswahl mehrerer Dateien, etwa file[123] für file1, file2 und file3.

Debug

Unter "Debuggen" versteht man die Suche nach und Behebung von Programmfehlern. Die Wortwahl (Debugging: Entwanzung) kommt aus der Zeit, als die ersten Rechner noch röhrenbasiert waren: Dort gab es dann Angestellte, die die Computer-Anlagen nach Käfern und anderen Kleintieren durchsuchen mussten, welche Kurzschlüsse verursachen konnten.

Skript

Ein (Shell-) Skript ist in etwa mit einer Batch-Datei von DOS vergleichbar: hier stehen in einer lesbaren Datei mehrere Shell-Befehle hintereinander, die in der angegebenen Reihenfolge ausgeführt werden. Mit Tests kann die Ausführung eines solchen Skripts auch verzweigen, so dass sich ähnliche Programmiermöglichkeiten wie bei einer richtigen Programmiersprache ergeben.

Infos

[1] K. Günther: Kompaktreferenz Linux, MITP 2000

[2] Zilm, Th., Grelck, K.: Linux - die Userreferenz, MITP 1999

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

Hits
Wertung: 0 Punkte (1 Stimme)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...