Studium, Ausbildung und Beruf

web uni-protokolle.de
 powered by
NachrichtenLexikonProtokolleBücherForenSonntag, 19. Januar 2020 

Unix-Shell


Dieser Artikel von Wikipedia ist u.U. veraltet. Die neue Version gibt es hier.
Das Betriebssystem Unix erlaubt verschiedene Kommandozeileninterpreter die unter Unix Shells genannt werden. Technisch ist eine solche ein ganz normales Programm ohne besondere Privilegien. Unix kann ein Anwender (oder der Systemverwalter) unter verschiedenen Shells wählen. Manche Unix-Versionen stellen ein chsh ( Change Shell ) Kommando zur Verfügung. Unix-Shells implementieren eine Skriptsprache und können so zur Programmierung und Automatisierung von Aufgaben eingesetzt werden.

Inhaltsverzeichnis

Allgemeines

Nach dem Einloggen ist die Shell Programm das vom login -Prozess gestartet wird und Kommandos entgegennimmt. Die werden dann ausgeführt. Die Shell enthält eingebaute wie 'cd'. Andere Kommandos werden im Dateisystem und dann gestartet.

Jede Unix-Shell enthält die folgenden Möglichkeiten:

  • Starten von Kommandos
  • Dateinamen-Wildcards ( globs ) als Kommandoargumente
  • Ausführung von Kommandos in Dateien so Skripte .
  • Bedingungen ( if case ) und Schleifen ( while for )
  • Eingebaute Kommandos ( cd read )
  • interne Variablen
  • Manipulation der Umgebungsvariablen für die neuen Prozesse
  • Ein-/Ausgabeumlenkung
  • Starten mehrerer Prozesse Verkettung über Pipes
  • Starten von Prozessen im Hintergrund
  • Definition des Eingabe-Aufforderungsstrings ( Prompt )
  • Definition der Suchreihenfolge externer Kommandos

Moderne Shells können darüber hinaus

  • Editierung der Kommandozeile ( command line editing )
  • Wiederholung und Editieren früherer Kommandos ( command history )
  • Stoppen und erneutes Starten von Prozessen Job Control )
  • Verschieben von Prozessen aus Vorder- in Hintergrund und umgekehrt ( Job Control )
  • Eingebautes Kommando zur Durchführung von Berechnungen expr )
  • Eingebautes Kommando zum Testen von Dateieigenschaften test )

Hinsichtlich dem Abbruch eines Kommandos machen die Shells die Eigenschaften des zugrundeliegenden Terminal-Gerätetreibers Die Shell wartet normalerweise auf das Ende Kommandos. CTRL-C bewirkt unter Unix einen Kommandoabbruch den Gerätetreiber auslöst.

Unix-Werkzeuge

Unix-Shells machen sich die Eigenschaften des Betriebssystems zunutze. Sie implementieren nur das Nötigste. Unix-Kommandos ergänzen über die leistungsfähige Ein-/Ausgabe und alles weitere. Unix enthält spezielle Kommandos für Textdateimanipulation wie Suchen Editieren Ersetzen Worte zählen Abschneiden von Zeilen usw.

Skripte

Der Urvater der heutigen Shells die Shell enthält nicht einmal eingebaute Kommandos für Dateieigenschaften und für einfache Berechnungen. Auch die einer Variablen ist nicht möglich. Damit wäre einmal ein einfacher Zähler zu implementieren.

Über die externen Kommandos expr test und echo wird dies möglich. Ein Skript das 1 bis 100 zählt kann wie folgt werden:

 #!/bin/sh I=1 # Variable I auf setzen while test $I -le 100 # externes Kommando test I<100 do echo $I externes Kommando echo gibt I aus I=`expr + 1` # externes Kommando expr Ausgabe expr nach I done  

Bei moderneren Shells sind die Kommandos expr test und echo intern da sie sehr häufig benötigt und die Shell auch nicht wie bei frühen Systemen klein gehalten werden muss.

Der Text eines Skripts kann in Datei geschrieben und mit dem Kommando chmod +x ausführbar gemacht. Es verhält sich dann jedes andere Kommando allerdings ist der Start privilegierten Skripts oft eingeschränkt.

Systemstart

Beim Hochfahren des Unix-Systems werden auch eingesetzt. Die BSD-Varianten starten dazu einfach das /etc/rc das dann alle Systeminitialisierungen wie Dateisystemüberprüfung usw. durchführt. System V Unix-Varianten verwenden sysinit das aus mehreren Shell-Skripten besteht.

Kommandos die eigentlich Shellskripte sind

Skripte sind von normalen Programmen in Anwendung nicht zu unterscheiden. Manche Unix-Versionen liefern einige Kommandos mit die als Shellskripte realisiert Insbesondere Kommandos wie man (Online-Manual) und cc (Aufruf von C-Compiler Assembler und Linker) bei vielen Unix-Varianten Shell-Skripte.

Die frühen Shells

Die Bourne Shell - sh

Der Ahne aller heutigen Shells ist Bourne Shell ( sh ) von Stephen Bourne die 1978 zusammen mit Unix V7 erschien. Diese Shell hat bereits wesentlichen Eigenschaften wie Ein-/Ausgabeumlenkung Pipes Hintergrundprozesse Kontrollstrukturen. der Kommandozeileneditierung verlässt sich die Shell auf Terminaltreiber der nur das Löschen der ganzen (CTRL-U) und des letzten Zeichens (DEL) erlaubt.

Die Bourne Shell ist Grundlage der modernen Unix-Shells die im Wesentlichen eine Erweiterung Shell darstellen. Skripte für die Bourne-Shell sind Änderung auch auf diesen Shells lauffähig. Die der Bourne-Shell sind richtungsweisend.

Die C-Shell - csh

Bill Joy entwickelte in Berkeley für die zweite BSD -Distribution (2BSD) von 1979 eine Shell die sich mehr an C-Syntax orientierte die C-Shell ( csh ). Diese Shell erlaubt bereits eine Kommandozeileneditierung nicht interaktiv sondern über eine spezielle Syntax. ermöglicht auch das Wiederholen (und Editieren) alter Außerdem wird erstmals die Job-Control-Möglichkeit implementiert: Über lässt sich ein Kommando stoppen und später die internen Kommandos fg (Foreground=Vordergrund) bzw. bg (Background=Hintergrund) fortsetzen.

Die Skriptfähigkeiten der C-Shell sind durch Unzulänglichkeiten etwas eingeschränkt z. B. kann die nicht unabhängig von der Standardausgabe umgelenkt werden. Anwender der für die interaktive Eingabe die verwendet kann durch ein vorangestelltes #!/bin/sh in seinen Skripten das Betriebssystem veranlassen Standard-Shell (diese ist mindestens kompatibel zur Bourne auf modernen Systemen auch meist POSIX -konform) zu verwenden. Dies ist auch für anderen Shells möglich.

Weiterentwicklungen

Auf jedem Unix-System befindet sich eine der Bourne Shell kompatible Shell in /bin/sh . Die Verfügbarkeit weiterer Shells hängt von jeweiligen Unix-Variante ab eine C-Shell Version findet oft in /bin/csh . Wegen der unterschiedlichen Syntax unterscheidet man Shell und C-Shell Abkömmlinge. Da praktisch alle Shells in der Programmiersprache C geschrieben sind lassen sich fehlende Shells nachrüsten. Auch auf fremden Betriebssystemen kann man eine Unix-Shell zumindest als Fremdsoftware finden.

Die Korn Shell - ksh

David Korn entwickelte für Unix System V von AT&T die Korn Shell ( ksh ). Diese orientiert sich an der Bourne übernimmt aber auch die Neuerungen der C-Shell Job-Control eine weiter verbesserte Kommandozeileneditierung. Diese Shell ksh88 ) ist Grundlage des POSIX-Standards. Die Korn-Shell als Teil von Unix-System V lange Zeit kommerziell erhältlich. Seit dem 1. März 2000 ist der Quelltext von ksh93 frei verfügbar. Es existiert eine Version 1988 ( ksh88 ) und eine neuere von 1993 ( ksh93 ). Viele kommerzielle Unix-Systeme verwenden die ksh als Standard-Shell ( /bin/sh ).

Die dtksh (Desktop Korn Shell) stellt eine Korn mit zusätzlichen Kommandos für die Programmierung von unter X11 / Motif dar.

Die Public Domain Korn Shell -

Die Public Domain Korn Shell ( pdksh ) ist eine freie und nicht vollständig Kopie der AT&T Korn Shell. Viele Funktionen ksh88 und wenige von ksh93 sind in ihr enthalten. Das OpenBSD -Projekt verwendet die pdksh als Standard-Shell ( /bin/sh ).

Die Bourne Again Shell - bash

Die Shell des GNU-Projekts heißt Bourne Again Shell ( bash ) ebenfalls eine Bourne Shell mit vielen Die Bourne Again Shell ist POSIX-konform und viele Funktionen der Korn Shell und der Sie ist die Standard-Shell ( /bin/sh ) auf vielen Linux -Systemen.

Die TENEX-C-Shell - tcsh

Die TENEX-C-Shell ( tcsh ) stellt eine Erweiterung der C-Shell von Zoulas dar. Sie enthält Verbesserungen der Kommandozeileneditierung andere Erweiterungen ist aber sonst vollständig kompatibel der C-Shell.

Die Z-Shell - zsh

Die Z-Shell ( zsh ) ist eine moderne Shell mit sehr Möglichkeiten. Sie ähnelt sehr der Korn Shell übernimmt auch Funktionen der Bourne Again Shell der TENEX-C-Shell. Sie geht aber in vieler eigene Wege und gilt als eine der Unix-Shells.

Die Almquist Shell - ash

Die Almquist Shell ( ash ) von Kenneth Almquist ist eine kleine schnelle Neuimplementierung der Bourne Shell. Sie orientiert am POSIX-Standard und eignet sich sehr gut Ausführung von Skripten. Zudem verzichtet sie auf Fähigkeiten wie Job Control die für interaktive hilfreich sind. Das FreeBSD - und NetBSD -Projekt verwenden eine weiterentwickelte Versionen der ash als Standard-Shell ( /bin/sh ).

Allgemeine Literatur

  • Helmut Herold: Linux-Unix-Shells Bourne-Shell Korn-Shell C-Shell bash tcsh ISBN 3827315115



Bücher zum Thema Unix-Shell

Dieser Artikel von Wikipedia unterliegt der GNU FDL.

ImpressumLesezeichen setzenSeite versendenSeite drucken

HTML-Code zum Verweis auf diese Seite:
<a href="http://www.uni-protokolle.de/Lexikon/Unix-Shell.html">Unix-Shell </a>