Möglichkeiten ein Shellskript aufzurufen: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(Die Seite wurde neu angelegt: „===bash skript (r)=== * Starten einer Subshell * Lesen der Skriptdatei von der Subshell * Kommandos werden nacheinander abgearbeitet * Beenden der Subshell un…“) |
|||
| (7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| − | ===bash skript (r)=== | + | === bash skript (r) === |
* Starten einer Subshell | * Starten einer Subshell | ||
* Lesen der Skriptdatei von der Subshell | * Lesen der Skriptdatei von der Subshell | ||
| Zeile 5: | Zeile 5: | ||
* Beenden der Subshell und Rückkehr zur aufrufenden Shell | * Beenden der Subshell und Rückkehr zur aufrufenden Shell | ||
''(Die Shell, die das Skript abarbeitet, kennt den Namen des Shellskriptes)'' | ''(Die Shell, die das Skript abarbeitet, kennt den Namen des Shellskriptes)'' | ||
| − | + | ||
| − | ===bash < skript (r)=== | + | === bash < skript (r) === |
* Starten einer Subshell | * Starten einer Subshell | ||
* Lesen der Skriptdatei von der Subshell | * Lesen der Skriptdatei von der Subshell | ||
| Zeile 13: | Zeile 13: | ||
''(Die Shell, die das Skript abarbeitet, kennt den Namen des Shellskriptes nicht)'' | ''(Die Shell, die das Skript abarbeitet, kennt den Namen des Shellskriptes nicht)'' | ||
| − | ===./skript (rx)=== | + | === ./skript (rx) === |
* Starten einer Subshell | * Starten einer Subshell | ||
* Lesen der Skriptdatei von der Subshell | * Lesen der Skriptdatei von der Subshell | ||
* Kommandos werden nacheinander abgearbeitet | * Kommandos werden nacheinander abgearbeitet | ||
* Beenden der Subshell und Rückkehr zur aufrufenden Shell | * Beenden der Subshell und Rückkehr zur aufrufenden Shell | ||
| − | ''(Die Shell, die das Skript abarbeitet, kennt den Namen des Shellskriptes | + | ''(Die Shell, die das Skript abarbeitet, kennt den Namen des Shellskriptes; es muss zusätzlich das Ausführungsrecht gesetzt sein.)'' |
| − | ===exec ./skript (rx)=== | + | === exec ./skript (rx) === |
* Die Subshell ersetzt die aktuelle Shell (überlädt die aktuelle Shell) | * Die Subshell ersetzt die aktuelle Shell (überlädt die aktuelle Shell) | ||
* Lesen der Skriptdatei von der Subshell | * Lesen der Skriptdatei von der Subshell | ||
| Zeile 26: | Zeile 26: | ||
* Beenden der Subshell; danach ist der Prozess der aufrufenden Shell beendet. | * Beenden der Subshell; danach ist der Prozess der aufrufenden Shell beendet. | ||
| − | ===source skript | + | === source skript oder . skript (r) === |
* Lesen der Skriptdatei von der aktuellen Shell | * Lesen der Skriptdatei von der aktuellen Shell | ||
* Der interaktive Modus der aktuellen Shell wird „unterbrochen“ | * Der interaktive Modus der aktuellen Shell wird „unterbrochen“ | ||
* Kommandos werden nacheinander abgearbeitet | * Kommandos werden nacheinander abgearbeitet | ||
''(Es wird kein neuer Prozess gestartet; Variablen haben in dieser Shell Gültigkeit)'' | ''(Es wird kein neuer Prozess gestartet; Variablen haben in dieser Shell Gültigkeit)'' | ||
| + | |||
| + | = Aufgaben = | ||
| + | ;Hinweis | ||
| + | * '''$0''' enthält den Namen des aktuell ausgeführten Skripts oder Befehls. | ||
| + | * '''$$''' enthält die Prozess-ID (PID) der Shell, in der das Skript läuft. | ||
| + | * Beide gehören zu den sogenannten '''Spezialvariablen''', die in einem späteren Kapitel ausführlich behandelt werden. | ||
| + | |||
| + | |||
| + | == Aufgabe – Skript erstellen == | ||
| + | * Erstellen Sie ein einfaches Skript mit dem Namen '''skript''', das folgende Befehle enthält: | ||
| + | ** date | ||
| + | ** hostname | ||
| + | ** echo $0 | ||
| + | ** echo $$ | ||
| + | |||
| + | == Aufgabe 2 - Verschiedene Aufrufarten testen == | ||
| + | * Führen Sie das Skript nacheinander auf die folgenden Arten aus: | ||
| + | ** '''bash skript''' | ||
| + | ** '''bash < skript''' | ||
| + | ** '''./skript''' | ||
| + | ** '''exec ./skript''' | ||
| + | ** '''source skript''' bzw. '''. skript''' | ||
| + | * Beobachten und notieren Sie, welche Unterschiede Sie feststellen. | ||
| + | |||
| + | == Aufgabe – Auswertung == | ||
| + | * Beantworten Sie die folgenden Fragen: | ||
| + | ** Welche Varianten starten eine neue Subshell? | ||
| + | ** Bei welchen Varianten bleibt die aktuelle Shell erhalten? | ||
| + | ** Bei welchen Aufrufen kennt die Shell den Namen des Skripts (''$0'')? | ||
| + | ** Bei welchen bleibt die Prozess-ID (''$$'') gleich? | ||
Aktuelle Version vom 17. Oktober 2025, 13:53 Uhr
bash skript (r)
- Starten einer Subshell
- Lesen der Skriptdatei von der Subshell
- Kommandos werden nacheinander abgearbeitet
- Beenden der Subshell und Rückkehr zur aufrufenden Shell
(Die Shell, die das Skript abarbeitet, kennt den Namen des Shellskriptes)
bash < skript (r)
- Starten einer Subshell
- Lesen der Skriptdatei von der Subshell
- Kommandos werden nacheinander abgearbeitet
- Beenden der Subshell und Rückkehr zur aufrufenden Shell
(Die Shell, die das Skript abarbeitet, kennt den Namen des Shellskriptes nicht)
./skript (rx)
- Starten einer Subshell
- Lesen der Skriptdatei von der Subshell
- Kommandos werden nacheinander abgearbeitet
- Beenden der Subshell und Rückkehr zur aufrufenden Shell
(Die Shell, die das Skript abarbeitet, kennt den Namen des Shellskriptes; es muss zusätzlich das Ausführungsrecht gesetzt sein.)
exec ./skript (rx)
- Die Subshell ersetzt die aktuelle Shell (überlädt die aktuelle Shell)
- Lesen der Skriptdatei von der Subshell
- Kommandos werden nacheinander abgearbeitet
- Beenden der Subshell; danach ist der Prozess der aufrufenden Shell beendet.
source skript oder . skript (r)
- Lesen der Skriptdatei von der aktuellen Shell
- Der interaktive Modus der aktuellen Shell wird „unterbrochen“
- Kommandos werden nacheinander abgearbeitet
(Es wird kein neuer Prozess gestartet; Variablen haben in dieser Shell Gültigkeit)
Aufgaben
- Hinweis
- $0 enthält den Namen des aktuell ausgeführten Skripts oder Befehls.
- $$ enthält die Prozess-ID (PID) der Shell, in der das Skript läuft.
- Beide gehören zu den sogenannten Spezialvariablen, die in einem späteren Kapitel ausführlich behandelt werden.
Aufgabe – Skript erstellen
- Erstellen Sie ein einfaches Skript mit dem Namen skript, das folgende Befehle enthält:
- date
- hostname
- echo $0
- echo $$
Aufgabe 2 - Verschiedene Aufrufarten testen
- Führen Sie das Skript nacheinander auf die folgenden Arten aus:
- bash skript
- bash < skript
- ./skript
- exec ./skript
- source skript bzw. . skript
- Beobachten und notieren Sie, welche Unterschiede Sie feststellen.
Aufgabe – Auswertung
- Beantworten Sie die folgenden Fragen:
- Welche Varianten starten eine neue Subshell?
- Bei welchen Varianten bleibt die aktuelle Shell erhalten?
- Bei welchen Aufrufen kennt die Shell den Namen des Skripts ($0)?
- Bei welchen bleibt die Prozess-ID ($$) gleich?