Der Martin: Script in Linux versus Batch in Windows

Beitrag lesen

Hallo,

Zunächst muss man zwischen Batch-Skripten (Windows) und Shell-Skripten (Linux) unterscheiden.

nur in der Detailbetrachtung; im Grunde ist beides dasselbe: Eine Textdatei enthält eine Folge von Anweisungen, die von irgendeinem Interpreter (entweder dem Shell-internen oder einem anderen) der Reihe nach abgearbeitet werden.

Die Shell-Skripte (Linux) können entweder in der Skriptsprache, die vom Kommandozeileninterpreter abgeleitet wurde, oder in einer Skriptsprache (Lisp, Python, Perl), die mit dem Kommandozeileninterpreter nichts zu tun haben, verfasst werden.

Ja. Wobei im zweiten Fall die schon erwähnte Shebang-Zeile notwendig ist, damit die Shell erkennt, "wer" dafür zuständig ist, während diese Zeile bei reinen Shell-Scripten nicht unbedingt nötig ist.

Batch-Skripte (Windows) kenne ich eigentlich nur in der Sprache die vom Kommandozeileninterpreter abgeleitet ist. Batch-Skripte in Sprachen die vom Kommandozeileninterpreter unabhängig sind habe ich in der Praxis bisher nie gesehen. Werden diese Sprachen in Windows überhaupt zur Batch-Programmierung eingesetzt?

Kaum. Das ist in der Windows-Welt sehr ungewöhnlich. Das hängt wohl unter anderem damit zusammen, dass Windows sich sehr viel stärker sld Linux an Laien-Anwender richtet. Die wollen in der Regel eine hübsch bunte GUI-Lösung zum Klicken. Die Kommandozeile nutzen nur wenige Windows-Anwender wirklich.

Verwendet man für ein Batch-Skript (Windows) oder ein Shell-Skript (Linux) die Programmiersprache die vom Kommandozeileninterpreter abgeleitet wurde, so ist es nicht notwendig die Datei ausführbar zu machen (Shebang Zeile bei Linux), da der Kommandozeileninterpreter alle im Skript verwendeten Befehle kennt.

Oh doch, sie muss in jedem Fall als ausführbar gekennzeichnet sein (das x-Flag in den Berechtigungen muss gesetzt sein), wenn man sie einfach so durch Eingabe des Namens aufrufen möchte.

Während es in Windows nur einen Kommandozeileninterpreter gibt ...

Das stimmt so nicht ganz. Frühere Windows-Versionen hatten als Erbe aus der DOS-Ära noch command.com als Shell, die NT-basierten Systeme (im Consumer-Bereich ab Windows XP) haben cmd.exe, die gegenüber command.com deutlich weiterentwickelt ist; und ab Windows 7 (?) steht als Alternative noch die Powershell zur Verfügung.

... hat jede Shell in Linux Ihren eigenen Kommandozeileninterpreter.

Ja, aber die sind einander recht ähnlich.

Welche Skriptsprache sollte man für Shell-Skripte (Linux) verwenden, die vom Kommandozeileninterpreter abgeleitete oder eine vom Kommandozeileninterpreter unabhängige Sprache (Lisp, Perl, Python)?

Das kommt sehr auf die gewünschte Anwendung an.

Skriptsprachen (Lisp, Perl, Python) und Programmiersprachen (Java, C, C++) haben ja einen Namen. Wie aber ist das mit den Programmiersprachen, die von den Kommandozeileninterpreter abgeleitet sind.

Die werden üblicherweise nicht als Programmiersprachen bezeichnet.

Haben diese Skriptsprachen eigentlich keine Namen?

Nicht wirklich. In Linux werden sie für gewöhnlich genauso genannt wie die Shell, mit der sie ausgeführt werden (bei den heutigen Linuxen meistens bash); in Windows ist der Begriff Batch sowohl für die Scriptdatei, als auch für die Sprache geläufig, auch wenn das nicht wirklich korrekt ist. Einen offiziellen Namen für diese Scriptsprachen gibt es meines Wissens nicht.

So long,
 Martin