Aufmacher

Bash vs. PowerShell

Die Kraft der Muschel

Microsofts neue PowerShell greift auf die Bibliotheken des .NET-Frameworks zurück und verfügt so über einen riesiger Fundus von Funktionen und Objekten. Ist sie dadurch einer traditionellen Shell wie der Bash überlegen?

Das Grundrezept

Die Hauptaufgabe einer Shell ist die Systemverwaltung. Daher bieten sowohl die Bash [1] als auch die PowerShell [2] die notwendigen Befehle, um in den Verzeichnissen zu navigieren, Dateioperationen vorzunehmen und andere Programme aufzurufen. Auch das Verwalten der Systemkonfiguration stellt eine wichtige Aufgabe dar. Während die Bash dafür vorwiegend auf externe Programme zurückgreift, integriert die PowerShell einige wichtige Systemwerkzeuge. So bietet etwa in der PowerShell das CmdletGet-Process ein Gegenstück zu ps, während das Cmdlet Get-Content dem Programm less entspricht.

Um den Programmablauf zu steuern, benötigt eine Shell Elemente zur bedingten Ausführung. Eine definierte Anzahl von Durchläufen legen beispielsweise for oder while in Verbindung mit der Auswertung einer Variablen fest. Listing 1 vergleicht die Ausgabe eines Zählers mit for in PowerShell und Bash.

Listing 1

Eine for-Schleife in der Windows Vista Powershell:

PS:> for ($i=1;$i -le 3;$i++) { Write-Host $i }
1
2
3
PS:>

Die gleiche Schleife in der Bash:

bash[~]$ for ((i=1;i<=3;i++); do echo $i; done
1
2
3
bash[~]$

Bei der Programmsteuerung durch Fallentscheidungen mittels if oder switch unterscheiden sich Bash und PowerShell nur wenig. Auch bei der Definition von Funktionen, der Nutzung von Umgebungsvariablen, dem begrenzte Gültigkeitsbereich von Variablen ("Scoping"), der Nutzung von regulären Ausdrücken und der Evaluation der Rückgabewerte von Programmen funktionieren beiden Shells recht ähnlich.

Eingeschränkte Starterlaubnis

Ein erster Unterschied zwischen PowerShell und Bash ergibt sich schon beim Aufruf eines Skript: Die PowerShell startet standardmäßig keine Skriptdateien und lässt sich daher nur interaktiv nutzen. Man kann sie aber dazu bringen, Skripte zu starten, sofern diese digital signiert sind. Eine solche digitale Signatur identifiziert den Autor des Skripts, denn nur er kann sie auf kryptografischem Weg erzeugt haben. Indem man das Signatur-Zertifikat des Skriptautors akzeptiert, bescheinigt man sein Vertrauen diesem gegenüber. "Fremde" Skripte dagegen führt die PowerShell erst einmal nicht aus. Um auch ohne Signatur ein Skript auszuführen, gilt es auf der Kommandozeile die Ausführungsrichtlinie (ExecutionPolicy) auf RemoteSigned zu setzen:

PS:> Set-ExecutionPolicy RemoteSigned

Nun akzeptiert die PowerShell alle lokalen Skripte. Stammen die Dateien dagegen aus einem Download oder sind sie per E-Mail angekommen, besteht die Shell weiter auf einer Signatur. Kommandodateien aus externen Quellen grundsätzlich nicht auszuführen, ist sicherheitstechnisch eine neue Qualität: Ein Skript-Virus wie "Love Letter" [3] verliert so jeden Schrecken.

Die Bash dagegen reguliert die Ausführungsberechtigung eines Skripts nicht über digitale Signaturen. Ob ein Skript ausgeführt werden darf, kontrollieren allein die im Dateisystem gesetzten Ausführungsberechtigungen.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Kommentare

Infos zur Publikation

LU 12/2017: Perfekte Videos

Digitale Ausgabe: Preis € 5,95
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Fernstudium Informatik
Joe Cole, 12.12.2017 10:36, 1 Antworten
Hallo! habe früher als ich 13 Jahre angefangen mit HTML und später Java zu programmieren. Weit...
Installation Linux mint auf stick
Reiner Schulz, 10.12.2017 17:34, 3 Antworten
Hallo, ich hab ein ISO-image mit Linux Mint auf einem Stick untergebracht Jetzt kann ich auch...
Canon Maxify 2750 oder ähnlicher Drucker
Hannes Richert, 05.12.2017 20:14, 4 Antworten
Hallo, leider hat Canon mich weiterverwiesen, weil sie Linux nicht supporten.. deshalb hier die...
Ubuntu Server
Steffen Seidler, 05.12.2017 12:10, 1 Antworten
Hallo! Hat jemand eine gute Anleitung für mich, wie ich Ubuntu Server einrichte? Habe bisher...
Tinte sparen bei neuem Drucker
Lars Schmitt, 30.11.2017 17:43, 2 Antworten
Hi Leute, ich habe mir Anfang diesen Monats einen Tintenstrahldrucker angeschafft, der auch su...