[[Inhaltsverzeichnis(1)]] [[Bild(Wiki/Icons/terminal.png, 64, left)]] Eine [wikipedia:Unix-Shell:Shell] ermöglicht die Benutzung des Computersystems über eingetippte Kommandos und ist vor allem bei von Unix abstammenden Systemen anzutreffen. Die Kombinierbarkeit von kleinen, aber leistungsfähigen und flexiblen Kommandozeilenprogrammen ist ein wichtiger Eckpfeiler der Unix-Philosophie. Dies verhilft der Shell, eigentlich ein Programm wie jedes andere, zu einem prominenten Status vor allem bei fortgeschrittenen Anwendern, die mit ihr Routinen automatisieren und permanent ein oder mehrere Instanzen einer Shell für den schnellen Zugriff offen halten. Hinter vielen Kommandos, die teilweise sogar von der grafischen Oberfläche aufgerufen werden, verstecken sich keine Programme in Maschinen-Code, sondern per Editor einsehbare Skripte. Im Artikel [:Terminal:] finden sich eine Übersicht der Anwendungen, mit denen man unter verschiedenen Desktop-Umgebungen auf eine Shell zugreifen kann. = Shells = Es gibt unter Linux mehrere verschiedene Shells. Diese unterscheiden sich in Funktionsumfang und Benutzerfreundlichkeit. {{{#!vorlage Tabelle <-4 tablestyle="width: 97%;" rowclass="titel">Shells +++ Name Beschreibung Paket Standard? +++ [:Bash:] Weit verbreitet bei Linux-Systemen; unter Ubuntu Standard-Shell für Benutzer für Login und als interaktive Shell '''bash''' ja +++ [:Dash:] Standard-Shell für Systemaufgaben unter Ubuntu '''dash''' ja +++ ash Diese Shell ist in Busybox enthalten und sorgt beim [:Bootvorgang:] für die Initialisierung des Root-Dateisystems. Man sieht ihren Prompt meist nur, wenn dabei ein fataler Fehler auftritt. '''busybox-*''' ja +++ [:Zsh:Z-Shell] Mächtige Shell mit einem sehr ausgereiften Command-Editor '''zsh''' nein +++ [:Fish:] Shell mit der expliziten Zielsetzung Benutzerfreundlichkeit '''fish''' (universe) nein +++ [http://www.kornshell.com/ Korn Shell] {en} Die Korn Shell (Eigenbezeichnung KornShell, auch als ksh, ksh88 und ksh93 bezeichnet) ist ein von David Korn an den AT&T Bell Laboratories entwickelter Kommandozeileninterpreter wie auch die Beschreibung der Scriptsprache, welche durch diesen Interpreter implementiert wird. Die Sprachbeschreibung selbst ist gemeinfrei, nicht jedoch jede Implementierung. Der originale Quellcode der ksh93 ist seit 2000 ebenfalls gemeinfrei. Die KornShell (in der Version von 1988) bildete die Grundlage für die POSIX-Shell-Spezifikation und erfüllt den POSIX2-Standard. Sie ist vollständig abwärtskompatibel mit der Bourne Shell (sh bzw. bsh) und übernimmt viele Neuerungen der C Shell (csh). '''ksh''' (''universe'') nein +++ [wikipedia:Kornshell#pdksh_.2F_mksh_.2F_oksh:Mksh] mksh ist der direkte Nachfolger der Korn Shell, aber nicht verbunden mit der AT&T Korn Shell und deren Programmierern. Vielmehr ersetzt es die Public Domain Korn Shell pdksh und implementiert gleichzeitig die Korn Shell programming language, die auch als Untermenge in der Bash enthalten ist. Gleichzeitig enthält das mksh-Paket seit [:Quantal:Ubuntu 12.10] die Legacy Korn Shell lksh: ein schlanker Kommandointerpreter, mit der Intention zum Ablauf von Shell-Skripten nach dem ksh-Standard. lksh und mksh unterliegen in keinem Fall der [wikipedia:Shellshock_(Sicherheitslücke):ShellShock]-Problematik. Die mksh wird statt der Bash in Android genutzt und ist nach Aussagen von Google damit häufiger in UNIX-artigen Systemen vertreten als die Bash. '''mksh''' (''universe'') nein }}} Die im System verfügbaren Login-Shells fragt der Befehl [[Vorlage(Befehl, 'cat /etc/shells' ) ]] ab, standardmäßig sind das nur die Bash und die Dash sowie diese mit alternativen Namen, worunter sie sich aber leicht abweichend verhalten. Die ab der nächsten Anmeldung im Textmodus zu verwendende Shell kann jeder Benutzer selbst mit dem Programm [:chsh:] (change shell) festlegen. Um herauszufinden, mit welcher Shell man im Moment arbeitet, kann man sich die [:Umgebungsvariable:] `SHELL` anzeigen lassen: {{{#!vorlage Befehl echo $SHELL }}} In manchen Situationen, beispielsweise beim Start einer Shell in einer Shell, funktioniert das nicht zuverlässig. = Grundlagen = Einige grundlegende Hinweise zur Verwendung der Shell: * [:Shell/Einführung:Eine kurze Einführung ins Terminal] * [:Shell/Modi:] - Erklärung der Unterschiede zwischen einer interaktiven und nicht-interaktiven sowie Login und nicht-Login Shell * [:Shell/Prozesssteuerung: Steuerung von Prozessen] * [:Signale:] in der Shell * [:Shell/Umleitungen:im Terminal Ausgaben umleiten] * [:Shell/Operatoren:Operatoren, um Befehle zu verbinden] * [:man:Handbücher für die Kommandozeile] * [:Umgebungsvariable:Umgebung mit Variablen festlegen] * [:Shell/Tipps_und_Tricks:Tipps und Tricks] – Funktionen optimal nutzen * [:Shell/Bash-Skripting-Guide_für_Anfänger:Bash-Skripting-Guide für Anfänger] * [:Shebang für Shellskripte:] - Probleme, die bei der Verwendung unterschiedlicher Shells auftreten können = Befehlsübersicht = Eine Vielzahl von grundlegenden Befehlen für die Kommandozeile übersichtlich aufgeführt: * [:Shell/Befehlsübersicht:] = Anwendungen = Eine Vielzahl von Anwendungen – von der Systemverwaltung bis zu Multimedia-Programmen – sind in dieser Übersicht aufgeführt: * [:Shell/Anwendungen:] = Links = * [wikipedia:POSIX:] * [http://www.shelldorado.com/ Heiner's SHELLdorado] {de} * Auch der Artikel [:Bash#Links:] enthält einige nützliche Internetseiten * [http://www.commandlinefu.com/ commandlinefu.com] {en} – Zauberkunststücke auf der Kommandozeile * [:Shell/Bash-Skripting-Guide_für_Anfänger:Bash-Skripting-Guide für Anfänger] ## im Archiv: * [:Howto/Dauer_der_Befehlsausführung_im_Terminal_automatisch_anzeigen:] # tag: Shell, Übersicht, System