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
$ nano greetings.sh
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
$ ls -l greetings.sh
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
$ chmod +x greetings.sh
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
$ ls -l greetings.sh
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
$ bash greetings.sh
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
$ sh greetings.sh
Explain Code
BETA
Hierbei nutzt du die Standardshell deines Systems, um das Skript auszuführen.
Starte das Skript mit source.
console
Copy
$ source greetings.sh
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
$ ./greetings.sh
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
$ mkdir test
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
$ echo $PATH
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
$ cd
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
$ greetings.sh
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
$ cd
Explain Code
BETA
Erstelle das Verzeichnis ~/.local/bin.
console
Copy
$ mkdir -p ~/.local/bin
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
$ source ~/.bashrc
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
$ greetings.sh
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.


