kalamazoo hat geschrieben: 30.03.2023 18:00:43
Die Korn-Shell scheint der Bash syntaktisch recht ähnlich zu sein.
Ja. Mal kurz zusammengefasst: Die erste Shell ueberhaupt war die Thompson-Shell. Dann kam AFAIR die Mashey-Shell. Daraufhin war die Bourne-Shell der Urvater der modernen Shells. Das war noch alles noch in den Bell Labs. In Berkeley (BSD) wurde dann die csh entwickelt, mit den zwei Features History und Commandline-Editing. Letzteres wurde durch die neu aufgekommenen Videoterminals sinnvoll. Die csh ist aber inkompatibel zu den anderen Shells. Die csh ist also ein Sonderling, der es auch nicht weit gebracht hat. In den Bell Labs hat die Kornshell (ksh) dann die Features von csh mit der Syntax der urspruenglichen Bourneshell (sh) vereint. Die ksh war dann auch die Basis fuer die POSIX-Definition der Shell Programming Language. Die bash kam etwas spaeter auf und hat ungefaehr das gleiche gemacht wie die ksh, also auch die Basis der sh mit den Features der csh. Lange Zeit war die ksh proprietaer, so dass die bash mit ihrer freien Lizenz einen Mehrwert hatte. Erst spaeter kamen mit pdksh (Public Domain ksh) und mksh (MirBSD ksh) freie Implementierungen der ksh. Die zsh war nochmal etwas spaeter dran als die bash und hat nochmal ungefaehr das gleiche gemacht, bloss hat sich das dann in zunehmend in eine mit Features vollgeladene Shell fuer den interaktiven Gebrauch entwickelt.
Manche Shells werden vor allem interaktiv genutzt: csh, zsh. Andere werden vor allem fuer Scripte genutzt: sh, dash (= Debian Almquist Shell) ... eigentlich wird nur fuer bourne-kompatible Shells programmiert. Manche Shells finden sich gleichermassen interaktiv als auch fuer Scripte im Einsatz: ksh, bash.
kalamazoo hat geschrieben: 30.03.2023 18:00:43
Wird übrigens noch irgendwo standardmäßig die ursprüngliche Bourne-Shell (bsh) verwendet, und wenn nein, warum nicht? Bezeichnet "sh" die Default-Shell eines Systems oder doch die Bourne-Shell?
Die Bourne-Shell wird `sh' genannt. Heute ist die alte Bourne-Shell so gut wie nirgends mehr im Einsatz. /bin/sh ist meist ein Symlink auf eine bourne-kompatible Shell, wie dash, bash.
Wenn Scripte nur POSIX-standardisierte Features verwenden, dann schreibt man ueblicherweise /bin/sh in den Shebang. Heutzutage programmieren aber viele fuer die Bash, um deren Features nutzen zu koennen. Dann sollte /bin/bash im Shebang stehen.
Ich hoffe, das hilft weiter.
P.S.
Eine richtige Bourne-Shell bekommst du z.B. hier her:
https://heirloom.sourceforge.net/sh.html Viel Spass damit!