Möglichkeiten ein Shellskript aufzurufen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

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?