Shellskript
Ein Shellskript oder Shell-Skript ist ein Computerprogramm, das von einer Shell interpretiert und ausgeführt wird. Es ist letztlich eine ausführbare Textdatei, in der all jene Anweisungen verwendet werden können, die ein Benutzer auch in der Befehlszeile der Shell nutzen kann.[1] Die Shell selbst ist auch eine Programmiersprache, wobei in verschiedenen Shells unterschiedliche Skriptsprachen verwendet werden.
Der Begriff Shellskript wird überwiegend für Unix-Shell-Skripte verwendet und bezieht sich daher vorwiegend auf unixähnliche Systeme, obwohl auch andere Betriebssysteme und Shells ähnliche Skripte nutzen, aber anders bezeichnen. UrsprungShellskripte gehen auf das 1965 geschriebene Programm RUNCOM zurück, das von Louis Pouzin für das Betriebssystem Multics entwickelt wurde. Von ihm stammt auch der Begriff „Shell“, wobei die Weiterentwicklung der Multics-Shell die Fähigkeiten von RUNCOM integrierte.[3] Die Entwickler von Unix nahmen sich Multics als Vorlage, sodass die ursprüngliche Unix-Shell stark von der Multics-Shell inspiriert war. Auch die Shells späterer Betriebssysteme haben das Konzept der Shellskripte übernommen. Bei Kommandozeileninterpretern von DOS, technisch gesehen ebenfalls Shells (z. B. COMMAND.COM oder 4DOS), werden Skripte als Stapelverarbeitungsdateien oder „Batch-Dateien“ (von englisch batch jobs für Stapelverarbeitung) bezeichnet. Bei der PowerShell von Microsoft heißen sie „PowerShell-Skripte“.[4] Syntaxen verschiedener Unix-ShellsDa unterschiedliche Unix-Shells, wie z. B. die Bash oder die C-Shell, nicht die gleiche Syntax bzw. Skriptsprache nutzen, ist ein Shellskript in der Regel nur für eine spezifische Shell nutzbar, sofern die eingesetzte Shell nicht die Syntax der anderen Shell versteht. Anders ist dies bei der in POSIX spezifizierten Syntax. Diese Spezifikation ermöglicht den systemübergreifenden Einsatz eines Skripts und die Interoperabilität mehrerer Systeme. Freilich muss dabei eine POSIX unterstützende Shell eingesetzt werden. Die erste POSIX-Spezifikation fußt auf der Kornshell und berücksichtigt die Eigenheiten der Bourne-Shell. Heute genutzte Shells verwenden meistens eine an POSIX orientierte Syntax. Darüber hinaus haben die meisten heute genutzten Shells einen sogenannten POSIX-Modus, der dazu führt, dass die verwendete Shell die POSIX-Syntax verwendet und nicht ihre native Syntax.[5] Nachfolgend eine Liste von Unix-Shells, gegliedert nach Syntax-Angabe per Shebang.
AufbauIn der ersten Zeile eines Shellskripts – auch Header genannt – wird festgelegt, welcher Interpreter das Skript abarbeiten soll. Ein Shellskript beginnt daher mit dem sogenannten Shebang, Das folgende Beispiel zeigt ein einfaches Shellskript in POSIX-Syntax mit einer Bei jedem Durchlauf wird die Variable #!/bin/sh
for i in 'Alfa Romeo' 'Bentley' 'Citroën'; do
echo $i
done
Das Auslesen der Variable Da das Programm echo schlicht alles ausgibt, was dahinter geschrieben steht (abgesehen von Kommentaren), ist es an dieser Stelle nicht nötig, die Variable in doppelte Anführungszeichen zu setzen. Soll der Wert der Variable aber anderweitig verwendet werden, müssen doppelte Anführungszeichen verwendet werden ( BesonderheitenOperatoren, Funktionen und LeerzeichenEine Besonderheit, im Gegensatz zu anderen Programmiersprachen, ist die zwingende Verwendung von Leerzeichen beim Aufruf von Operatoren und Funktionen.[7] Vergleichsoperatoren des folgenden Beispiels:
if (( 1 == 5 )); then
echo "1 und 5 sind gleich"
else
echo "1 und 5 sind nicht gleich"
fi
Ausführen eines ShellskriptsAufruf in der Unix-ShellStandardmäßig sind neu erstellte Dateien unter Unix nicht ausführbar. Um ein Shellskript ausführen zu können, muss es über die Zugriffsrechte auf „ausführbar“ gesetzt werden. Dies geschieht durch das Programm chmod mit folgendem (oder ähnlichem) Befehl: chmod +x script.sh
Soll das Shellskript von einem beliebigen Pfad aus ausgeführt werden, muss der komplette Pfad zum Shellskript angegeben werden. Beispiel: Das Shellskript /usr/local/bin/script.sh soll ausgeführt werden. Es muss folgender Befehl eingegeben werden: /usr/local/bin/script.sh
Falls das Shellskript im aktuellen Arbeitsverzeichnis (englisch „working directory“) gespeichert ist und dort ausgeführt werden soll, geschieht dies durch Voranstellen des aktuellen Pfads ./script.sh
AusführungsortDas Arbeitsverzeichnis des Shellskripts ist der Pfad, von dem aus es aufgerufen wird, also nicht der Ort, wo es sich selbst befindet. DateinamenerweiterungEine Dateinamenerweiterung für Shellskript-Dateien ist gänzlich unnötig. Sie wird ausschließlich hinzugefügt, um einem Benutzer grob Informationen über den Inhalt der Datei zu geben oder um sie innerhalb einer Desktop-Umgebung einem Programm zum Bearbeiten per Doppelklick zuzuweisen – i. d. Regel einem Texteditor oder einer integrierten Entwicklungsumgebung. Die Erweiterung kann beispielsweise allgemein .sh lauten. Spezieller sind Erweiterungen wie .bash oder .zsh. Texteditoren und ähnlichen dient die Erweiterung zum Anwenden passender Syntaxhervorhebung. InhaltstypDer Inhaltstyp (Content Type oder MIME-Type) kann – abhängig vom System – wie folgt lauten:
Literatur
Weblinks
Einzelnachweise
|