Die Powershell ist eine turing-vollständige Programmiersprache. Die Bash ist es nicht. Die Bash ist nie designt worden, aber immer ein klein bißchen weiterentwickelt. Richtige Probleme sind nie gelöst, sondern immer nur ein weiteres Schwalbennest zum Umgehen rangehängt worden, bis keiner mehr durchgeblickt hat. Konstrukte wie `'"@$"'` gibt es in Unmassen, um Interpretationen von Texten in bestimmten Reihenfolgen zu erzwingen. Viele Scripte funktionen sofort nicht, wenn man Sonderzeichen in Dateinamen hat. Mit ", `, ', eval und noch einem ganzen Haufen von Hilfsmitteln schafft man es meist trotzdem, dem Programm nach vielen Versuchen die richtige Bedeutung zu gehen. Allerdings gibt es auch Fälle, die in der Bash nicht lösbar sind.Frank Klemm: Klar, die Powershell bring schon viele Vorteile. Programmiert man direkt in der Shell oder was meinst du mit Programmiersprache?
Die Sprachen (bash, csh, ksh) sind nicht weiterentwickelt worden, sondern sie sind notdürftig erweitert worden, ohne generelle Probleme zu lösen. Hinzu kommt noch, daß in den letzten 10 Jahren gar nichts mehr passiert ist und es viele interne Restriktionen gibt (command line too long), die man immer wieder ein bißchen verschoben hat.Klar, die Shells unter Unix sind aus den Anfängen, aber auch diese sind kontinuierlich weiterentwickelt worden und ich muss sagen vom Umfang her schon sehr groß.
Monad braucht kein awk oder sed. Man sollte sich überlegen, warum es sackweise solche Tools für die Unix-Shells gibt. Der Grund ist, daß die Sprache nicht vollständig ist und man für einfachste Dinge Zusatzprogramme braucht, um einfache Aufgaben erledigen zu können. Ein weiteres Problem ist, daß die Kommunikation per Texte mit Inline-Signalling erfolgt. Jede Interpretationsstufe wirft für folgende Stufen wichtige Informationen weg. Ein schönes Beispiel:Auch die Möglichkeiten von Shellscripten und Interaktion mit anderen Programmen (awk, sed, perl, etc) sind ausgereift.
$ rm -i *
in einem Verzeichnis mit einer Datei "-rf". In einem System, welches Konzepte der 90er Jahre beinhaltet, würde der Dateiname "-rf" nicht in eine Option "-rf" konvertiert werden.
Das Zusatztool perl gehört in eine andere Gruppe, die heißt, daß man Shells zum Aufrufen ordentlicher Scripting-Systeme verwenden soll. Das hat nichts mit der Leistungsfähigkeit der Shell zu tun, sondern mit der Möglichkeit, dieses Gefängnis zu verlassen.
Das Problem wird nun bei der Entwicklung sein, wofür entwickel ich? Gerade als Admin muss man nun berücksichtigen, ob man schon auf Vista umgestiegen ist oder noch eine XP/2K Umgebung oder sogar eine Mischumgebung hat. Oder kann man die Shell auch unter XP Pro/2K installieren?
Sie läuft unter Windows XP. .NET Version 2 - Framework installieren (das ist die libc des aktuellen Jahrzehnts ;-) und dann kannst Du Monad installieren. Aufruf erfolgt mit "msh".
Kristian Köhntopp: ,,Benutze Perl. Shell will man können, dann aber nicht benutzen.''
Ein Streitgespräch über die Schwächen der Unix Shells gab es in den 1990er Jahren in diversen Unix und BSD-Newsgruppen. Microsoft hat nach 10 Jahren darauf reagiert (es gibt eine Schwachstellenanalyse der Unix-Shells, die genau die in den späten 1990er Jahren diskutierten Punkte enthält). Eine Chance, daß dort unter Unix/Linux/BSD was passiert, sehe ich im wesentlichen über das Mono-Projekt. Schob verstorbene Mitglieder der "Church of Linux" werden sich wahrscheinlich bei dem gedanken schon im Grabe umdrehen ...
Zuletzt bearbeitet: