Bearbeiten von „Wissen/Bourne Shell“
Aus UUGRN
Warnung: Du bist nicht angemeldet. Deine IP-Adresse wird bei Bearbeitungen öffentlich sichtbar. Melde dich an oder erstelle ein Benutzerkonto, damit Bearbeitungen deinem Benutzernamen zugeordnet werden.
Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und speichere dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.
Aktuelle Version | Dein Text | ||
Zeile 21: | Zeile 21: | ||
* Hauptaugenmerk auf “Command Language” (mit Bedingunge, Schleifen u.v.a.m.). | * Hauptaugenmerk auf “Command Language” (mit Bedingunge, Schleifen u.v.a.m.). | ||
** Syntax der Sprache inspiriert von ALGOL68. | ** Syntax der Sprache inspiriert von ALGOL68. | ||
− | * Außerdem können Shell- | + | * Außerdem können Shell-Skripten selbst Filter sein (ging bei Thompson Shell nicht). |
* Seit 1989 quasi quasi unverändert, vergleiche auch: https://en.wikipedia.org/wiki/Bourne_shell#Features_introduced_after_1979 | * Seit 1989 quasi quasi unverändert, vergleiche auch: https://en.wikipedia.org/wiki/Bourne_shell#Features_introduced_after_1979 | ||
* Code der Bourne Shell war die Inspiration für den International Obfuscated C Code Contest". | * Code der Bourne Shell war die Inspiration für den International Obfuscated C Code Contest". | ||
Zeile 37: | Zeile 37: | ||
* Mehr Funktionen. | * Mehr Funktionen. | ||
* Sehr viel besser für interaktive Benutzung: | * Sehr viel besser für interaktive Benutzung: | ||
− | ** History | + | ** History, |
** Commandline editing, | ** Commandline editing, | ||
** Job-Kontrolle. | ** Job-Kontrolle. | ||
Zeile 47: | Zeile 47: | ||
=== Bourne-Again-Shell === | === Bourne-Again-Shell === | ||
− | * | + | * Autragsarbeit eines Festangestellten der Free Software Foundation für das GNU-Projekt. |
** Auf BSD nicht standardmäßig installiert bzw. oft in <code>/usr/local/bin</code> o.ä. | ** Auf BSD nicht standardmäßig installiert bzw. oft in <code>/usr/local/bin</code> o.ä. | ||
* Kompatibel zu Bourne Shell: | * Kompatibel zu Bourne Shell: | ||
Zeile 69: | Zeile 69: | ||
* Reimplementation der Bourne Shell mit stark erweiterten Features. | * Reimplementation der Bourne Shell mit stark erweiterten Features. | ||
* Empfohlen als interaktive, nicht aber als nicht-interaktive Shell. | * Empfohlen als interaktive, nicht aber als nicht-interaktive Shell. | ||
− | ** Grund: Shell- | + | ** Grund: Shell-Skripten in zsh setzen installierte zsh voraus. |
=== Kompatibilität === | === Kompatibilität === | ||
− | * Kern: Bourne Shell | + | * Kern: Bourne Shell. |
− | * Vorsicht: | + | * Aber Vorsicht: Auch in Bourne-kompatinlen Shells (also allen ausser C-Shell) kann man Code schreiben, der in Bourne ''nicht'' geht. |
== Teil 2: Grundlagen == | == Teil 2: Grundlagen == | ||
Zeile 84: | Zeile 84: | ||
** Zeilenweise Ein- und Ausgabe über ein tty (“Teletype”, Printer, serielle Schnittstelle, Terminal, Terminal Emulator). | ** Zeilenweise Ein- und Ausgabe über ein tty (“Teletype”, Printer, serielle Schnittstelle, Terminal, Terminal Emulator). | ||
* Betriebsmodus “non-interaktiv” | * Betriebsmodus “non-interaktiv” | ||
− | * “Shebang”-Konvention in Skripten (erste Zeile <code>#!/bin/sh</code> ). | + | * “Shebang”-Konvention in Skripten (erste Zeile <code>#!/bin/sh</code>). |
* Kommentare | * Kommentare | ||
* Line Continuation | * Line Continuation | ||
Zeile 109: | Zeile 109: | ||
*** <code>echo "$foo"</code> (“verkürzte Syntax”) | *** <code>echo "$foo"</code> (“verkürzte Syntax”) | ||
*** <code>echo "${foo}"</code> (“vollständige Syntax”) | *** <code>echo "${foo}"</code> (“vollständige Syntax”) | ||
− | ** Variablen mit Bedeutung für die Shell selbst (Beispiele): | + | ** Variablen mit Bedeutung für die Shell selbst (Beispiele): PATH, PS1, IFS, … |
− | ** “Interessante” Umgebungsvariablen: | + | ** “Interessante” Umgebungsvariablen: PATH, USER, SHELL, PPID, … |
* Expansion: | * Expansion: | ||
** Gute Übersicht: | ** Gute Übersicht: | ||
Zeile 164: | Zeile 164: | ||
** Empfehlung: Bourne Syntax verwenden, da vorwärtskompatibel. | ** Empfehlung: Bourne Syntax verwenden, da vorwärtskompatibel. | ||
* Source Files | * Source Files | ||
− | ** <em>Hinweis:</em> Kam im Vortrag aus | + | ** <em>Hinweis:</em> Kam im Vortrag aus Zeitgrpnden nicht dran. |
** Inhalt einer anderen Datei an dieser Stelle komplett als Shellcode laden und ausführen. | ** Inhalt einer anderen Datei an dieser Stelle komplett als Shellcode laden und ausführen. | ||
** Beispiel: <code>. /usr/local/lib/shell-stuff/config.sh</code> | ** Beispiel: <code>. /usr/local/lib/shell-stuff/config.sh</code> |