Wie Bash-Skripte funktionieren und warum sie nützlich sind

Mit einem Bash-Skript kannst du eine Reihe von Befehlen in einem einzigen Durchlauf ausführen. Das ist besonders praktisch, wenn du dieselbe Abfolge von Kommandos immer wieder benötigst. Sobald ein Bash-Skript erstellt ist, lässt es sich weitergeben und auf unterschiedlichen Systemen erneut verwenden. So sparst du Zeit und reduzierst manuelle Arbeitsschritte. Standardmäßig wird ein Bash-Skript aus dem Verzeichnis heraus ausgeführt, in dem es gespeichert ist.

In diesem Beitrag erfährst du, wie du Bash-Skripte unter Linux von beliebigen Orten aus starten kannst. Du erstellst und führst ein Bash-Skript aus, machst es ausführbar und systemweit nutzbar und lernst die unterschiedlichen Wege kennen, um das zu erreichen.

Skriptdatei erstellen

Bevor ein Bash-Skript überall im System verfügbar ist, brauchst du zuerst ein funktionierendes Skript. In den folgenden Schritten erstellst du das Skript, das in diesem Artikel durchgehend verwendet wird.

Lege in deinem Home-Verzeichnis eine Datei greetings.sh an und bearbeite sie.

console

Copy

Explain Code

BETA

Füge anschließend den folgenden Inhalt in die Datei ein.

bash

Copy

#!/bin/bash
echo "Welcome to centron"
echo "This script is running from: $(pwd) and is executed at: $(date)"

Explain Code

BETA

Speichere die Datei und schließe den Editor. Das Skript übernimmt dabei Folgendes:

  • Es nutzt die Shebang-Zeile #!/bin/bash, damit klar ist, dass Bash das Skript interpretieren soll.
  • Es gibt beim Ausführen die Meldung Welcome to centron im Terminal aus.
  • Es zeigt mit $(pwd) das aktuelle Arbeitsverzeichnis sowie mit $(date) Datum und Uhrzeit zum Zeitpunkt der Ausführung an.

Skript ausführbar machen

Frisch angelegte Dateien besitzen oft keine Ausführungsrechte. Damit du ein Bash-Skript wie ein gewöhnliches Kommando direkt im Terminal starten kannst, musst du die Berechtigungen entsprechend anpassen.

Prüfe zunächst die aktuellen Dateirechte des Skripts.

console

Copy

Explain Code

BETA

Aus dem obigen Befehl ergibt sich:

  • ls: Zeigt Informationen zur Datei an.
  • -l: Liefert eine detaillierte Ausgabe inkl. Rechten, Besitzer, Größe und Zeitstempeln.
  • greetings.sh: Steht für die Datei, die du prüfen möchtest.

Output:

-rw-rw-r– 1 linuxuser linuxuser 107 Jul 25 02:52 greetings.sh

Da kein x (Execute) vorhanden ist, ist die Datei noch nicht ausführbar.

Vergib nun Ausführungsrechte für das Skript.

console

Copy

Explain Code

BETA

Der Befehl bedeutet:

  • chmod: Ändert Zugriffs- und Ausführungsrechte unter Linux.
  • +x: Erteilt dem Besitzer, der Gruppe und anderen das Ausführungsrecht.
  • greetings.sh: Die Datei, deren Rechte geändert werden.

Kontrolliere die Rechte erneut.

console

Copy

Explain Code

BETA

Output:

-rwxrwxr-x 1 linuxuser linuxuser 107 Jul 25 02:52 greetings.sh

Im Terminal sollte greetings.sh nun grün erscheinen (oder je nach Farbschema anders markiert sein). Das zeigt, dass die Datei ausführbar ist und direkt gestartet werden kann.

Das Bash-Skript ausführen

Auch ohne Ausführungsrechte kannst du ein Bash-Skript starten, indem du es über einen Interpreter aufrufst. Solange du dich im Verzeichnis befindest, in dem das Skript liegt, und Leserechte hast, kannst du dafür bash, sh oder source verwenden. Alternativ funktioniert auch der Aufruf über den vollständigen Pfad, selbst wenn das Skript nicht ausführbar ist. In den nächsten Schritten startest du das Skript mit bash, sh und source.

Führe das Skript mit dem bash-Befehl aus.

console

Copy

Explain Code

BETA

Damit wird das Skript über den Bash-Interpreter gestartet, weshalb es keine Ausführungsrechte benötigt.

Starte das Skript mit sh.

console

Copy

Explain Code

BETA

Hierbei nutzt du die Standardshell deines Systems, um das Skript auszuführen.

Starte das Skript mit source.

console

Copy

Explain Code

BETA

Der Befehl source wird typischerweise verwendet, um ein Skript in der aktuellen Shell auszuführen, sodass Änderungen nach dem Lauf erhalten bleiben. In diesem Fall werden die Befehle aus greetings.sh direkt in deiner laufenden Shell-Session ausgeführt, statt eine neue Subshell zu öffnen.

Note

Nutze source, wenn ein Skript deine aktive Shell-Umgebung verändern muss, etwa durch das Exportieren von Umgebungsvariablen oder das Definieren von Funktionen und Aliases. Für Aufgaben wie Backups, Installationen oder reine Ausgaben, die die aktuelle Session nicht beeinflussen, reichen bash und sh völlig aus. Something that doesn’t impact the active shell session.

Starte das Skript mit dem Präfix ./.

console

Copy

Explain Code

BETA

Output:

Welcome to centron
This script is running from: /home/user and is executed at: Mo Nov 17 08:03:00 PM WAT 2025

Note

Ohne die Ausführungsrechte per chmod +x würde dieser Aufruf nicht funktionieren.

Führe das Bash-Skript aus einem beliebigen Verzeichnis aus.

Erstelle dafür ein Testverzeichnis namens test.

console

Copy

Explain Code

BETA

Wechsle in das Verzeichnis und versuche, das Skript dort zu starten.

console

Copy

$ cd test/ && ./greetings.sh

Explain Code

BETA

Output:

-bash: ./greetings.sh: No such file or directory

Wenn du ein Bash-Skript mit bash, sh, source oder ./ außerhalb seines eigenen Verzeichnisses aufrufst, schlägt der Start mit „No such file or directory“ fehl. Ausnahmen gibt es nur, wenn du den absoluten Pfad angibst oder das Skriptverzeichnis zu deiner PATH-Umgebungsvariablen hinzugefügt wurde.

Skript aus jedem Verzeichnis ausführbar machen

Wenn du ein Bash-Skript von überall auf deinem Linux-System starten möchtest, musst du es in einem Ordner ablegen, der bereits in deiner PATH-Umgebungsvariablen enthalten ist. Deine Shell durchsucht bei jedem eingegebenen Befehl die Verzeichnisse in PATH. Liegt ein Skript in einem dieser Ordner, wird es von einem lokalen Skript, das nur im Erstellungsordner funktioniert, zu einem systemweiten Kommando, das du an jeder Stelle im Dateisystem ausführen kannst.

In den folgenden Schritten lässt du dir den aktuellen PATH-Wert anzeigen und verschiebst dein Bash-Skript nach /usr/local/bin/.

Zeige deine PATH-Umgebungsvariable an.

console

Copy

Explain Code

BETA

Output:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Die Ausgabe oben zeigt alle Verzeichnisse, die in PATH enthalten sind. Alles, was dort ausführbar liegt, kann systemweit von jedem Ort gestartet werden.

Wechsle zurück in dein Home-Verzeichnis.

console

Copy

Explain Code

BETA

Verschiebe dein Bash-Skript nach /usr/local/bin.

console

Copy

$ sudo mv greetings.sh /usr/local/bin/

Explain Code

BETA

Prüfe, ob das Skript jetzt global ausführbar ist.

console

Copy

Explain Code

BETA

Output:

Welcome to centron
This script is running from: /home/user and is executed at: Fri Nov 21 09:43:30 PM UTC 2025

Das Verzeichnis /usr/local/bin ist für von Nutzern installierte Programme und Skripte gedacht und bereits Teil von PATH. Dadurch kollidiert es nicht mit systemverwalteten Paketen. Weil es ein Systemordner ist, brauchst du sudo, um Dateien dorthin zu verschieben. Danach können alle Nutzer des Systems die dortigen Skripte verwenden.

Alternativ kannst du Skripte nur für dein eigenes Benutzerkonto global verfügbar machen, indem du sie in ~/.local/bin speicherst. Dieses Verzeichnis ist für persönliche Skripte und Programme vorgesehen, sodass du dafür kein sudo benötigst. In den nächsten Schritten erstellst du ~/.local/bin, verschiebst dein Skript dorthin und ergänzt den Ordner in deiner PATH-Variablen, damit nur dein Benutzer das Skript überall ausführen kann.

Wechsle in dein Home-Verzeichnis.

console

Copy

Explain Code

BETA

Erstelle das Verzeichnis ~/.local/bin.

console

Copy

Explain Code

BETA

Verschiebe dein Skript nach ~/.local/bin.

console

Copy

$ mv greetings.sh ~/.local/bin/

Explain Code

BETA

Überprüfe, ob der Ordner bereits in deinem PATH enthalten ist.

console

Copy

$ echo $PATH | grep -o "$HOME/.local/bin"

Explain Code

BETA

Wenn keine Ausgabe erscheint, ist ~/.local/bin noch nicht Teil deines PATH. Dann musst du das Verzeichnis manuell in deiner Shell-Konfiguration hinzufügen.

Füge ~/.local/bin in deine Shell-Konfigurationsdatei ~/.bashrc ein.

console

Copy

$ echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc

Explain Code

BETA

Lade deine Shell-Konfiguration neu, damit die Änderung sofort greift.

console

Copy

Explain Code

BETA

Kontrolliere, ob ~/.local/bin jetzt in deinem PATH auftaucht.

console

Copy

$ echo $PATH | grep -o "$HOME/.local/bin"

Explain Code

BETA

Starte dein Skript nun aus einem beliebigen Ordner, zum Beispiel aus ~/test2.

console

Copy

$ mkdir -p ~/test2 && cd ~/test2 && greetings.sh

Explain Code

BETA

Output:

Welcome to centron
This script is running from: /home/user and is executed at: Sun Nov 23 07:27:12 PM UTC 2025

Bash-Skript aus PATH-Verzeichnissen entfernen

Wenn du dein Bash-Skript nicht mehr global verfügbar haben möchtest, kannst du es aus den PATH-Ordnern löschen, in die du es gelegt hast. In den folgenden Schritten entfernst du greetings.sh aus /usr/local/bin/ und ~/.local/bin/.

Entferne es aus /usr/local/bin/.

console

Copy

$ sudo rm /usr/local/bin/greetings.sh

Explain Code

BETA

Entferne das Skript aus ~/.local/bin/.

console

Copy

$ rm ~/.local/bin/greetings.sh

Explain Code

BETA

Da dir dieses Verzeichnis gehört, ist sudo hier nicht erforderlich.

Überprüfe, dass das Skript nicht mehr global erreichbar ist, zum Beispiel aus ~/test2.

console

Copy

Explain Code

BETA

Output:

-bash: /home/linuxuser/.local/bin/greetings.sh: No such file or directory

Damit ist das Skript nur noch im ursprünglichen Home-Verzeichnis über ./greetings.sh erreichbar.

Fazit

In diesem Artikel hast du gelernt, wie du ein Bash-Skript erstellst und auf unterschiedliche Weise ausführst. Außerdem weißt du jetzt, wie du Skripte systemweit verfügbar machst, indem du sie in PATH-Verzeichnisse ablegst: /usr/local/bin/ für alle Benutzer oder ~/.local/bin/ nur für dein eigenes Benutzerkonto.

Quelle: vultr.com

Jetzt 200€ Guthaben sichern

Registrieren Sie sich jetzt in unserer ccloud³ und erhalten Sie 200€ Startguthaben für Ihr Projekt.

Das könnte Sie auch interessieren: