wann beginnt die nahe Zukunft? Vor 11 Jahren schrieb Fedora
1
Features/UsrMove
2
All the old paths are reachable, because there a compat symlinks
3
in place, which will not go away (at least not in the near future).
4
All your scripts and binaries should work, like they did before.
Die Symlinks /bin->/usr/bin usw. abzuschaffen, ist ja der nächste logische Schritt. Debian bookworm ist jetzt die zweite Generation ohne echtes /bin, wie lange geht das noch gut? Habt ihr schon alle eure Scripts auf #!/usr/bin/sh umgebaut?
Ich denke nicht, dass ich die Zeit noch erleben werde, in der /bin/sh
nicht mehr nutzbar ist.
Solaris? Wo die Posix-Shell sich unter /usr/xpg4/bin/sh versteckt … /bin/sh hat dort nur eine sehr historische Variante.
Auf allen anderen Systemen sollte man erwarten können, dass /bin/sh eine Posix-Shell ist. Ob das nun bash, ash, dash oder sonstwas ist, bleibt sich eigentlich gleich.
Auf allen anderen Systemen sollte man erwarten können, dass /bin/sh eine
Posix-Shell ist. Ob das nun bash, ash, dash oder sonstwas ist, bleibt
sich eigentlich gleich.
Na gut, aber wenn der Link /bin->/usr/bin abgeschafft wird, erwischt das Script garkeine shell mehr.
Na gut, aber wenn der Link /bin->/usr/bin abgeschafft wird, erwischt das
Script garkeine shell mehr.
Es gibt inzwischen genügend Systeme, bei denen /bin und /usr/bin das gleiche sind. Bislang ist noch keiner auf die Schnapsidee gekommen, deshalb /bin in die Tonne zu kloppen.
Aber man kann natürlich auch einfach den Script mit ":" auf der ersten Zeile anfangen.
Ich denke, eigentlich sollte man /usr/bin/env nehmen, aber dann ist /usr/bin/env hartkodiert.
Ich finde das momentane System sowieso doof. Wenn man mal einrichten könnte, dass z.B. #!sh automatisch das macht, was heute "#!/usr/bin/env sh" macht, das wäre die Lösung!
Wer ein Shell-Script schreibt, schreibt es für einen bestimmten
Shell-Standard. Und wenn das Posix ist, wärs eher unklug, auf solche
Weise eine "csh" unterzujubeln.
Ich finde das momentane System sowieso doof. Wenn man mal einrichten
könnte, dass z.B. #!sh automatisch das macht, was heute "#!/usr/bin/env
sh" macht, das wäre die Lösung!
Das kannst du mit binfmt_misc[1] sehr einfach erledigen. Hat aber das übliche Problem eines nicht-Standards - geht nur bei dir, bei anderen fallen solche Dateien auf die Schnauze.
Ich sehe überhaupt keinen Grund dazu /bin überall gegen /usr/bin zu ersetzen.
Das wäre ein massiver Bruch und würde uns über Jahrzehnte beschäftigen.
Und wozu das alles? Um den /bin -> /usr/bin Symlink einzusparen, den moderne Distros eh schon oft nutzen? /bin und vieles andere im Wurzelverzeichnis sind doch bereits weg.
Passend dazu waere dann ein vi aus den (AT&T) Originalquellen
compiliert.
Zum Zeitpunkt von Version 8 war der Quellcode von AT&T UNIX nicht mehr problemlos verfügbar. Der kommentierte Quellcode des Kernels von UNIX Version 6 beschäftigte indes noch Jahre später die Copyshops rund um die Unis, als Lernmaterial:
https://de.wikipedia.org/wiki/Lions_Book
Yep. Eben BSD, nicht AT&T, auch wenns auf den ersten Blick anders aussieht. Die BSD Lizenz erlaubt eine ziemlich freie Nutzung des Quellcodes, solange die hier gezeigte letzte Zeile drin bleibt.
"Die Berkeley Software Distribution (BSD) ist eine Variante des Betriebssystems Unix, die an der Universität von Kalifornien in Berkeley ab 1977 entstanden ist." (Wikipedia)
Da BSD lange Zeit noch Originalquellcode von AT&T enthielt, gab es folgerichtig so lange Zoff zwischen den beiden, bis BSD die letzte Zeile AT&T Code eliminierte. Umgekehrt sah aufgrund der freien Lizenz AT&T keine Probleme darin, BSD Code zu übernehmen.
Seit Jahren fangen alle Scripte bei mir mit #!/usr/bin/python3 an.
Bei mir ist das Lua, bei anderen Perl. Allerdings haben diese Sprachen das Problem, dass sie nicht überall vorhanden sind (python3 z.B. gibt's bei mir nicht) und dass man mit den reinen Sprachen meist nicht allzuweit kommt - man braucht zusätzlich oft noch irgendwelche externen Module (evtl sogar eigene). Deshalb beschränke ich das auf Skripte, die ausschließlich bei mir laufen sollen - da weiß ich, was vorhanden ist, was ich benutzen darf.
Gibt es außer bauformb und dl8dtl überhaupt noch irgend jemanden der
Scripte für die Bourneshell schreibt?
Nun ja, einige Sachen sind in der Shell einfacher zu lösen. Und halt alles, was auf Standardsystemen laufen soll. Die hier benötigten "externen Module" beschränken sich auf POSIX-Kommandos (d.h. u.a. auch, #!/bin/sh und nicht #!/bin/bash!).
Bei Makefiles und in der Kommandozeile selbst ist etwas mehr sh-Wissen auch nicht verkehrt ...
Gibt es außer bauformb und dl8dtl überhaupt noch irgend jemanden der
Scripte für die Bourneshell schreibt?
Sagen wir mal so: die Posix-Shell.
Die Bourne-Shell ist es nur noch bei Solaris (falls sie es nicht inzwischen doch mal geändert haben – habe ich schon 'ne Weile nicht mehr in den Fingern gehabt).
Es gibt ziemlich viele Standardaufgaben, die halt damit nach wie vor erledigt werden, und wie schon genannt wurde, die Shell ist halt auf einem unixoiden System immer da, alles andere kann da sein, muss nicht.
/usr/bin/python3 ist genauso unportabel wie /bin/bash – bei mir würdest du Python3 beispielsweise unter /usr/local/bin/python vorfinden, ein /usr/local/bin/python3 gibt es nicht, aber ein /usr/local/bin/python3.* (je nach aktueller Version).
Ich hatte mich zwar vor zig Jahren entschieden, alle nicht-trivialen Scripte in Perl zu schreiben, weil ich das für alle im Laufe der Zeit genutzten Plattformen hatte (darunter DOS, 16/32 Bit OS/2, NT). Aber für Trivialkram in Unix/Linux war immer noch die Shell da.
Seit Jahren fangen alle Scripte bei mir mit #!/usr/bin/python3 an.
Bei mir ist das Lua, bei anderen Perl. Allerdings haben diese Sprachen
das Problem, dass sie nicht überall vorhanden sind (python3 z.B. gibt's
bei mir nicht)
Wo gibt's denn kein python3? Ich dachte, das sei überall vorhanden, wobei ich zugegebenermaßen außerhalb der Linux-Welt nicht weiß, wie populär da Python ist.
und dass man mit den reinen Sprachen meist nicht allzuweit kommt - man
braucht zusätzlich oft noch irgendwelche externen Module (evtl sogar
eigene).
Also zumindest Python liefert da ja schon ziemlich viel mit, was für die üblichen Skripting-Aufgaben mehr als ausreichend ist.
Gibt es außer bauformb und dl8dtl überhaupt noch irgend jemanden der
Scripte für die Bourneshell schreibt?
Nun ja, einige Sachen sind in der Shell einfacher zu lösen.
Ja, vor allem wenn das Skript im Wesentlich nur daraus besteht, ein paar Kommandozeilenprogramme aufzurufen und miteinander zu 'verpipen'.
S.o., beispielsweise auf FreeBSD. Dort war man konsequenter als Linux: *) "python" ist dort ein Python 3, steht allerdings in /usr/local/bin, da es nicht Bestandteil des Basissystems ist.
*) Als die meisten Linux-Distris. Keine Ahnung, ob es welche gibt, die das anders handhaben.
Die Frage ist falsch gestellt.
Haette man sie richtig gestellt, haette man auch schon die Antwort.
Es gibt durchaus Systeme, bei denen eine vorhandene initiale
Textkonsole nur dazu taugt, Fehlermeldungen auszugeben und eine
andere Umgebung zu starten. Vermutlich kennst du sowas nicht.
Das kannst du mit binfmt_misc[1] sehr einfach erledigen.
Hab ich jetzt mal umgesetzt, siehe Anhang. Anschalten mit "./shebang --enable", abschalten mit "./shebang --disable", Verwendung auf eigene Gefahr.
Anders als bei normalen shebang Zeilen in Linux interpretiert es auch noch \ escapes, erlaubt mehrere Argumente und kann - darum gieng es mir eigentlich - Binaries im Path suchen.
Es wäre mir zwar lieber, wenn der Kernel das machen würde. Jedes mal so ein Programm zu starten ist doch einiges an unnötigem Overhead.
Man arbeitet fieberhaft daran, Linux kaputt zu frickeln.
Das kann schneller gehen als einem lieb ist.
Bei manchen Projekten habe ich den Eindruck, das da Leute kommen mit enormen Fachwissen und erst ein paar einwandfreie Beitraege machen, und dann, ganz ploetzlich einen Riesen"fehler" der sich erst spaeter auswirkt, bzw. auffaellt.
Das passierst meistens bei erfolgreichen Projekten mit closed-source Konkurrenz und/oder Schluesseltechnologien wie Grafikkartentreiber etc.
Ein Schelm wer boeses dabei denkt. Wer macht bloss sowas?