Shell: Unterschied zwischen den Versionen
Michi (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Michi (Diskussion | Beiträge) |
||
(16 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
Die <b>Shell</b> (auch: Befehlsinterpreter, Befehlszeileninterpreter, Kommandointerpreter, Kommandozeileninterpreter; engl. command line interpreter / CLI) ist ein [[Rechnerprogramm]], das eine Zeile Text in der Befehlszeile einliest, diesen Text als Befehl ([[Shell-Befehl]]) interpretiert und ausführt - beispielsweise durch Starten weiterer Programme. Sie vermittelt so zwischen dem Anwender und dem [[Betriebssystem]]. | Die <b>Shell</b> (auch: Befehlsinterpreter, Befehlszeileninterpreter, Kommandointerpreter, Kommandozeileninterpreter; engl. command line interpreter / CLI) ist ein [[Rechnerprogramm]], das eine Zeile Text in der [[Befehlszeile]] einliest, diesen Text als Befehl ([[Shell-Befehl]]) interpretiert und ausführt - beispielsweise durch Starten weiterer Programme. Sie vermittelt so zwischen dem Anwender und dem [[Betriebssystem]]. | ||
Die Funktionsweise beim interaktiven Arbeiten am Bildschirm entspricht damit der auf früheren Grossrechnern, als Befehle per Lochkarte ein- und etwaige Ergebnisse auf einem Drucker zeilenweise ausgegeben wurden. Auch in grafischen Benutzeroberflächen ist die Funktion einer Shell vorhanden, die die Eingaben des Benutzers interpretiert und umsetzt. | Die Funktionsweise beim interaktiven Arbeiten am Bildschirm entspricht damit der auf früheren Grossrechnern, als Befehle per Lochkarte ein- und etwaige Ergebnisse auf einem Drucker zeilenweise ausgegeben wurden. Auch in grafischen Benutzeroberflächen ist die Funktion einer Shell vorhanden, die die Eingaben des Benutzers interpretiert und umsetzt. | ||
Für den erfahrenen Benutzer hat die Shell den Vorteil der schnellen, direkten Kontrolle und Erreichbarkeit aller Funktionen. Voraussetzung ist allerdings die Kenntnis der Shell-Befehle und der Funktionsweise ihrer Parameter. | Für den erfahrenen Benutzer hat die Shell den Vorteil der schnellen, direkten Kontrolle und Erreichbarkeit aller Funktionen. Voraussetzung ist allerdings die Kenntnis der Shell-Befehle und der Funktionsweise ihrer Parameter. Eine häufig wiederkehrende Befehlsfolge lässt sich durch ein [[Shellskript]] automatisieren, was bei einer grafischen Benutzeroberfläche nur schwer möglich ist. | ||
Beispiele für Shells sind die folgenden. | Beispiele für Shells sind die folgenden. | ||
Zeile 10: | Zeile 10: | ||
! Jahr !! Befehlszeileninterpreter !! Betriebssystem | ! Jahr !! Befehlszeileninterpreter !! Betriebssystem | ||
|- | |- | ||
| || [[Bourne-Shell]] /<tt> sh</tt> || Linux, Unix | | 1977/1978 || [[Bourne-Shell]] /<tt> sh</tt> || Linux, Unix | ||
|- | |- | ||
| || [[C-Shell]] /<tt> csh</tt> || Linux, Unix | | || [[C-Shell]] /<tt> csh</tt> || Linux, Unix | ||
|- | |- | ||
| || [[Korn-Shell]] /<tt> ksh</tt> || Linux, Unix | | 1982 || [[Korn-Shell]] /<tt> ksh</tt> || Linux, Unix | ||
|- | |- | ||
| || [[Bourne Again Shell]] /<tt> bash</tt> || Linux, Unix | | || [[Bourne Again Shell]] /<tt> bash</tt> || Linux, Unix | ||
Zeile 21: | Zeile 21: | ||
|- | |- | ||
| || <tt>command.com</tt> || Microsoft DOS, Microsoft Windows 9x-Linie, Microsoft Windows NT | | || <tt>command.com</tt> || Microsoft DOS, Microsoft Windows 9x-Linie, Microsoft Windows NT | ||
|- | |||
| 1990 || [[Z-Shell]] /<tt> zsh</tt> || Linux, Unix | |||
|- | |- | ||
| || [[A-Shell]] /<tt> ash</tt> || Linux, Unix | | || [[A-Shell]] /<tt> ash</tt> || Linux, Unix | ||
|- | |- | ||
| || | | 2002 || Debian Almquist-Shell /<tt> dash</tt> || Linux | ||
|- | |- | ||
| || Windows Power Shell || Microsoft Windows XP, Microsoft Windows Server 2003, Microsoft Windows Vista, Microsoft Exchange Server 2007 | | || Windows Power Shell || Microsoft Windows XP, Microsoft Windows Server 2003, Microsoft Windows Vista, Microsoft Exchange Server 2007 | ||
Zeile 31: | Zeile 33: | ||
|} | |} | ||
Auch | Auch [[Skriptsprache]]n (z. B. BASIC, Lisp, [[Perl]]) bieten eine gewisse Tauglichkeit als Shell. Ebenso gibt es für [[Python]] und [[Ruby]] interaktive Interpreter. Manche Texteditoren (z. B. [[vi]], [[emacs]]) erlauben ebenfalls die Ausführung von relativ komplexen Befehlen über eine Befehlszeile. | ||
== Shells unter Unix und Linux == | == Shells unter Unix und Linux == | ||
Zeile 38: | Zeile 40: | ||
{| class=wikitable | {| class=wikitable | ||
! || [[Bourne-Shell]]<br>(sh) || [[C-Shell]]<br>(csh) || [[Korn-Shell]]<br>(ksh) || [[Bourne | ! || [[Bourne-Shell]]<br>(sh) || [[C-Shell]]<br>(csh) || [[Korn-Shell]]<br>(ksh) || [[Bourne Again Shell]]<br>(bash) | ||
|- | |- | ||
| History || nein || ja || ja || ja | | [[Shell-History]] || nein || ja || ja || ja | ||
|- | |- | ||
| Inline Editing || nein || ja || ja || ja | | Inline Editing || nein || ja || ja || ja | ||
Zeile 78: | Zeile 80: | ||
* Datei "~/.profile" (hier wird auch "export ENV=$HOME/.bashrc" gesetzt). | * Datei "~/.profile" (hier wird auch "export ENV=$HOME/.bashrc" gesetzt). | ||
* Die mit "$ENV" gesetzten [[Umgebungsvariable]]n. | * Die mit "$ENV" gesetzten [[Umgebungsvariable]]n. | ||
* Datei ".bashrc" ( | * Datei "~/.bashrc" (in der [[Bourne Again Shell]]) | ||
Die für einen Benutzer gültige Datei ".profile". | Die für einen Benutzer gültige Datei ".profile". | ||
Zeile 108: | Zeile 110: | ||
Der Benutzer "root" sollte nur "trusted directories" (d. h. Verzeichnisse, in denen ausschliesslich der Benutzer "root" Schreibberechtigung hat) im Pfad haben. Entsprechende Shellskripte setzen den Pfad selber. Das aktuelle Verzeichnis "." sollte aus Sicherheitsgründen niemals in "PATH" enthalten sein. Folgende Pfade bewirken, dass sich das aktuelle Verzeichnis in "PATH" befindet. | Der Benutzer "root" sollte nur "trusted directories" (d. h. Verzeichnisse, in denen ausschliesslich der Benutzer "root" Schreibberechtigung hat) im Pfad haben. Entsprechende Shellskripte setzen den Pfad selber. Das aktuelle Verzeichnis "." sollte aus Sicherheitsgründen niemals in "PATH" enthalten sein. Folgende Pfade bewirken, dass sich das aktuelle Verzeichnis in "PATH" befindet. | ||
:/bin | |||
/bin::/sbin | |||
/bin: | |||
:.: | |||
== FAQ == | |||
=== Aktuell verwendete Shell === | |||
* https://www.cyberciti.biz/tips/how-do-i-find-out-what-shell-im-using.html | |||
== Weblinks == | == Weblinks == | ||
{{ | {{Weblinks}} | ||
{{ | {{url_dewikipedia|Kommandozeileninterpreter|Kommandozeileninterpreter}} | ||
{{url_dewikipedia|Betriebssystem-Shell|Betriebssystem-Shell}} | |||
{{url|DE|Linux User|ger|http://www.linux-user.de/ausgabe/2000/06/092-shells/092-shells.html|(Un)geliebte Shell}} | |||
{{Fuss}} | |||
Aktuelle Version vom 28. September 2023, 12:54 Uhr
Die Shell (auch: Befehlsinterpreter, Befehlszeileninterpreter, Kommandointerpreter, Kommandozeileninterpreter; engl. command line interpreter / CLI) ist ein Rechnerprogramm, das eine Zeile Text in der Befehlszeile einliest, diesen Text als Befehl (Shell-Befehl) interpretiert und ausführt - beispielsweise durch Starten weiterer Programme. Sie vermittelt so zwischen dem Anwender und dem Betriebssystem.
Die Funktionsweise beim interaktiven Arbeiten am Bildschirm entspricht damit der auf früheren Grossrechnern, als Befehle per Lochkarte ein- und etwaige Ergebnisse auf einem Drucker zeilenweise ausgegeben wurden. Auch in grafischen Benutzeroberflächen ist die Funktion einer Shell vorhanden, die die Eingaben des Benutzers interpretiert und umsetzt.
Für den erfahrenen Benutzer hat die Shell den Vorteil der schnellen, direkten Kontrolle und Erreichbarkeit aller Funktionen. Voraussetzung ist allerdings die Kenntnis der Shell-Befehle und der Funktionsweise ihrer Parameter. Eine häufig wiederkehrende Befehlsfolge lässt sich durch ein Shellskript automatisieren, was bei einer grafischen Benutzeroberfläche nur schwer möglich ist.
Beispiele für Shells sind die folgenden.
Jahr | Befehlszeileninterpreter | Betriebssystem |
---|---|---|
1977/1978 | Bourne-Shell / sh | Linux, Unix |
C-Shell / csh | Linux, Unix | |
1982 | Korn-Shell / ksh | Linux, Unix |
Bourne Again Shell / bash | Linux, Unix | |
cmd.exe | Microsoft Windows NT, OS/2 | |
command.com | Microsoft DOS, Microsoft Windows 9x-Linie, Microsoft Windows NT | |
1990 | Z-Shell / zsh | Linux, Unix |
A-Shell / ash | Linux, Unix | |
2002 | Debian Almquist-Shell / dash | Linux |
Windows Power Shell | Microsoft Windows XP, Microsoft Windows Server 2003, Microsoft Windows Vista, Microsoft Exchange Server 2007 | |
Windows Recovery Console | Microsoft Windows 2000, Microsoft Windows XP |
Auch Skriptsprachen (z. B. BASIC, Lisp, Perl) bieten eine gewisse Tauglichkeit als Shell. Ebenso gibt es für Python und Ruby interaktive Interpreter. Manche Texteditoren (z. B. vi, emacs) erlauben ebenfalls die Ausführung von relativ komplexen Befehlen über eine Befehlszeile.
Shells unter Unix und Linux
Eine kurze Übersicht zeigt einige Fähigkeiten der Shells unter den Betriebssystemen Unix und Linux.
Bourne-Shell (sh) |
C-Shell (csh) |
Korn-Shell (ksh) |
Bourne Again Shell (bash) | |
---|---|---|---|---|
Shell-History | nein | ja | ja | ja |
Inline Editing | nein | ja | ja | ja |
Integer Arithmetik | nein | nein | ja | ja |
Aliasing | nein | ja | ja | ja |
Funktionen | ja | nein | ja | ja |
Signal Handling | ja | ja | ja | ja |
Kontrollstrukturen | ja | ja | ja | ja |
Menü-Kontrollstruktur | nein | nein | ja | ja |
Job Control | nein | ja | ja | ja |
Restricted Shell | ja | nein | ja | ja |
Pfadnamen expandieren | nein | nein | ja | ja |
Aufruf der Shell
Jede Shell hat eines oder mehrere Startskripte, die aufgerufen werden je nach dem, von welcher Art die aktuelle Shell ist.
- In eine Login Shell gelangt man, wenn man sich über ein Textterminal, über ssh, telnet oder über die Konsole anmeldet. Normalerweise liest eine Login Shell verschiedene Konfigurationsskripte und ist über den Befehl who sichtbar.
- Non-login Shell
xterm kann die Shell sowohl als Login Shell als auch als Non-Login Shell ausführen.
Profile
Nacheinander werden bei der Anmeldung an eine Login Shell folgende Dateien abgearbeitet. In den Profildateien stehen Variablen (z. B. "PATH" oder "ENV"). In den Shell-Startup-Dateien (z. B. ".bashrc") stehen Aliase, Funktionen und stty-Einstellungen (falls nötig).
- Datei "/etc/profile" mit systemweit gültigen Einstellungen.
- Datei "~/.profile" (hier wird auch "export ENV=$HOME/.bashrc" gesetzt).
- Die mit "$ENV" gesetzten Umgebungsvariablen.
- Datei "~/.bashrc" (in der Bourne Again Shell)
Die für einen Benutzer gültige Datei ".profile".
PATH=/bin:/usr/bin:~/bin export PATH /usr/games/fortune PS1="Mein Herr und Gebieter, was wünscht Ihr? " # Prompt date # gibt das aktuelle Datum aus umask 002 # Lesen und Schreiben für Benutzer und Gruppe, nur Lesen für andere (d. h. 664) stty erase ^H intr ^C # Definition des Löschzeichen und des Unterbrechungszeichens
Einlesen der Werte in der Datei ".profile" - der Punkt am Anfang ("source") verhindert dabei die Erzeugung einer Subshell, bewirkt also dasselbe, als wären die Zeilen in der Datei ".profile" von Hand auf der Befehlszeile eingegeben worden.
$ . ./.profile
Die Variable PATH
Folgende Verzeichnisse sollten in der Variable "PATH" enthalten sein.
/bin /sbin /usr/bin /usr/local/bin /usr/local/sbin /usr/sbin
Der Benutzer "root" sollte nur "trusted directories" (d. h. Verzeichnisse, in denen ausschliesslich der Benutzer "root" Schreibberechtigung hat) im Pfad haben. Entsprechende Shellskripte setzen den Pfad selber. Das aktuelle Verzeichnis "." sollte aus Sicherheitsgründen niemals in "PATH" enthalten sein. Folgende Pfade bewirken, dass sich das aktuelle Verzeichnis in "PATH" befindet.
:/bin /bin::/sbin /bin: :.:
FAQ
Aktuell verwendete Shell
Weblinks
Herausgeber | Sprache | Webseitentitel | Anmerkungen |
---|---|---|---|
Wikipedia | ger | Kommandozeileninterpreterwbm | Enzyklopädischer Artikel |
Wikipedia | ger | Betriebssystem-Shellwbm | Enzyklopädischer Artikel |
Linux User | ger | (Un)geliebte Shellwbm |