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 02/2018: PAKETE VERWALTEN

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

JQuery-Script läuft nicht mit Linux-Browsern
Stefan Jahn, 16.02.2018 12:49, 2 Antworten
Hallo zusammen, ...folgender goldener Code (ein jQuery-Script als Ergebnis verschiedener Exper...
XSane-Fotokopie druckt nicht mehr
Wimpy *, 30.01.2018 13:29, 0 Antworten
openSuse 42.3 KDE 5.8.7 Seit einem Software-Update druckt XSane keine Fotokopie mehr aus. Fehler...
TOR-Browser stürzt wegen Wikipedia ab
Wimpy *, 27.01.2018 14:57, 0 Antworten
Tor-Browser 7.5 based on Mozilla Firefox 52.8.0 64-Bit. Bei Aufruf von http: oder https://de.wi...
Wifikarte verhindert Bootvorgang
Maik Kühn, 21.01.2018 22:23, 1 Antworten
iwlwifi-7265D -26 failed to load iwlwifi-7265D -25 failed to load iwlwifi-7265D -24 failed to l...
sharklinux
Gerd-Peter Behrendt, 18.01.2018 23:58, 2 Antworten
Hallo zusammen, ich habe sharklinux von der DVD Installiert. 2x, jedesmal nach dem Reboot ist di...