Bash-Skript aufrufen

Bash-Skript aufrufen

Ein einfaches Skript:

echo "file: $0"

wenn es wie folgt aufgerufen wird:

bash myscript.sh

oder

./meinscript.sh

gibt den Dateinamen des Skripts ( file: myscript.sh) wie erwartet zurück, aber beim Aufrufen:

Quelle myscript.sh

oder

. ./meinscript.sh

gibt den Shell-Namen ( bash) anstelle des Skriptdateinamens an.

Warum ist das so?

Antwort1

Der erste Aufruf startet eine neue Instanz von Bash, um das Skript zu interpretieren, was bedeutet, dass Bash $0seinen Pfad festlegt.

Der zweite Aufruf behandelt die Datei als ausführbare Datei und führt sie aus, sodass $0auf sie verwiesen wird.

Die letzten beiden Aufrufe laden die Datei in die aktuelle Bash-Instanz und $0verweisen daher dorthin.

NB: Für Nr. 2 muss die Datei ausführbar sein, für Nr. 1, 3 und 4 nicht.

verwandte Informationen