ubuntuusers.de

Shebang

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |
Dieses Thema ist die Diskussion des Artikels Shebang_für_Shellskripte.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17583

Wohnort: Berlin

Ich habe http://wiki.ubuntuusers.de/Baustelle/Shebang in die Gesellschaft eingeführt und bitte um wohlgefälligste Betrachtung.

Heinrich_Schwietering Team-Icon

Wikiteam
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11322

Wohnort: Bremen

Hi!

Ja, is' denn schon 1. April? Oder gar Weihnachten? Schönes Fertigstelldatum....

Eigentlich kennst du doch die Wiki-Kriterien, oder?

so long
hank

EDIT: Sehe gerade die Einstellzeit... 😀

aasche

Anmeldungsdatum:
30. Januar 2006

Beiträge: 14259

Heinrich Schwietering schrieb:

Eigentlich kennst du doch die Wiki-Kriterien, oder?

Die beispielsweise

Laesst man den Interpreter weg, muss man es erst ausführbar machen

gegenueber

Lass ich den Interpreter weg, muss ich es erst ausführbar machen

bevorzugen.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13075

Hallo unbekannter user 😉,

mir gefällt die Seite gut, weil Du das so strukturiert angehst. Ich habe gleich mal einen Link zum POSIX-Standard eingebaut.

Meine Faustregeln sähen allerdings anders aus:

  1. Benutze immer "#!/bin/sh" und beschränke Dich auf POSIX-Standard-Features.

  2. Wenn Du erweiterte Features brauchst, benutze die entsprechende Shell explizit in der Shebang-Zeile.

Man könnte hier auch noch erwähnen, dass man oft Shell-Optionen wie "-f" und "-e" in der Shebang-Zeile findet und welche Vor- oder Nachteile das hat gegenüber dem Einfügen im Skript (als "set -f" z.B.). Gemeint ist natürlich, dass die Optionen dann nur mit Shebang-Aufruf wirken.

Ciao

robert

user_unknown

(Themenstarter)
Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17583

Wohnort: Berlin

aasche schrieb:

Heinrich Schwietering schrieb:

Eigentlich kennst du doch die Wiki-Kriterien, oder?

Die beispielsweise

Laesst man den Interpreter weg, muss man es erst ausführbar machen

gegenueber

Lass ich den Interpreter weg, muss ich es erst ausführbar machen

bevorzugen.

Ja, das bedeutet das gleiche, das ist ein generalisiertes 'ich', aber bitte...

Heinrich Schwietering schrieb:

Hi!

Ja, is' denn schon 1. April? Oder gar Weihnachten? Schönes Fertigstelldatum....

Ja, ich meinte, als ich die Seite anlegte, es werde nach dem Produktionsdatum gefragt, und da das der Rechner selbst weiß, und ich eingeloggt war, und der Rechner auch selbst weiß, wer da eingeloggt ist, und trotzdem fragt, da weckte das meinen Spieltrieb, und ich wählte ein Standarddatum. Kann man auch ${now()} eintragen?

Eigentlich kennst du doch die Wiki-Kriterien, oder?

Nein. tl;dr. Ich korrigiere ja viel und erzeuge wenig neu, und korrigiere nicht nach den Wikikriterien, sondern danach, ob ich meine dass es stimmt, ob ich meine es sei verständlich, und ob Rechtschreibung/Ausdruck. Meinst Du auch das mit dem man? Habe ich gelesen, aber so kann ich nicht schreiben. Ich kann es später in die Richtung korrigieren, aber beim Schreiben muss ich erstmal so schreiben, wie mir der Schnabel gewachsen ist, sonst wird das nix.

Wäre mir aber aufgefallen, dass ich ich geschrieben habe, hätte ich es korrigiert. Vielleicht. Wenn es mir dann noch gefallen hätte.

Heinrich_Schwietering Team-Icon

Wikiteam
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11322

Wohnort: Bremen

Hi!

Na, dann auch für dich: Schau doch mal bei Wiki/Referenz und Wiki/Syntax rein 😉

so long
hank

user_unknown

(Themenstarter)
Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17583

Wohnort: Berlin

rklm schrieb:

mir gefällt die Seite gut, weil Du das so strukturiert angehst. Ich habe gleich mal einen Link zum POSIX-Standard eingebaut.

Schön.

Meine Faustregeln sähen allerdings anders aus:

  1. Benutze immer "#!/bin/sh" und beschränke Dich auf POSIX-Standard-Features.

  2. Wenn Du erweiterte Features brauchst, benutze die entsprechende Shell explizit in der Shebang-Zeile.

Du wirst entschuldigen, aber das ist ja keine Seite user unknown oder rklm, sondern eine Seite für Leute, vornehmlich Anfänger, die was mit dem Shebang falsch gemacht haben, eine Fehlermeldung bekommen, und die wir vom Shell & Programmieren - Kabinett flugs mal auf den Wikispeicher schicken, um die Erklärung nicht in epischer Breite wieder und wieder zu posten.

Also an Leute gerichtet, die in einen Fehler gelaufen sind, während sie selbst was geschrieben haben - nicht so sehr Leute, die fremde Skripte lesen und verstehen wollen.

Wieso soll sich jmd. auf den Posixstandard beschränken? Auf dem Server, wenn man von Open-Solaris über HP-UX und Linux in den Geschmacksrichtungen Fedora, Suse, Debian und Ubuntu alles drin hat; jemand der ein Script für /etc/init.d schreibt und jemand der an Installationsscripten bastelt - ja, ja, ja. Da zählt Portabilität, aber wer das macht ist kein Anfänger mehr, und wenn doch, soll der eben mehr kennen als eine Faustformel.

Ein weit verbreiteter Fehler ist ja, dass die Leute /bin/sh irgendwo gesehen haben, das nachmachen, und anderswo bashism gesehen haben, und die auch nachmachen - beides vermischt. Peng!

Die Beschränkung auf POSIX-Features könnte nur gelingen, wenn man alle User dazu brächte, sich auf POSIX-Features zu beschränken - das macht aber kaum einer. Das ist nicht praktikabel.

Man könnte hier auch noch erwähnen, dass man oft Shell-Optionen wie "-f" und "-e" in der Shebang-Zeile findet und welche Vor- oder Nachteile das hat gegenüber dem Einfügen im Skript (als "set -f" z.B.). Gemeint ist natürlich, dass die Optionen dann nur mit Shebang-Aufruf wirken.

Findet man das oft? Ich habe sowas vielleicht 5x in meinem Leben gefunden. Tatsache ist aber, dass es in den Artikel hineingehört, und man es da suchen würde, wenn man es sucht. Wo fügt man es also ein? Ich schau mal. Ich muss ja noch die 'ichs' wegräumen, da ist man ja in der Nähe.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13075

user unknown schrieb:

Meine Faustregeln sähen allerdings anders aus:

  1. Benutze immer "#!/bin/sh" und beschränke Dich auf POSIX-Standard-Features.

  2. Wenn Du erweiterte Features brauchst, benutze die entsprechende Shell explizit in der Shebang-Zeile.

Du wirst entschuldigen, aber das ist ja keine Seite user unknown oder rklm, sondern eine Seite für Leute, vornehmlich Anfänger, die was mit dem Shebang falsch gemacht haben, eine Fehlermeldung bekommen, und die wir vom Shell & Programmieren - Kabinett flugs mal auf den Wikispeicher schicken, um die Erklärung nicht in epischer Breite wieder und wieder zu posten.

Ich denke, es ist auch eine Seite für Leute, die anfangen Shell-Skripte zu schreiben, oder?

Also an Leute gerichtet, die in einen Fehler gelaufen sind, während sie selbst was geschrieben haben - nicht so sehr Leute, die fremde Skripte lesen und verstehen wollen.

Meine Faustregel hilft bestimmt niemandem, der ein Skript lesen will - aber Deine wendet sich ja auch an einen Autor. Wenn das eine Faustregel für die Fehlerbehebung sein soll, dann würde ich das auch explizit so schreiben.

Wieso soll sich jmd. auf den Posixstandard beschränken? Auf dem Server, wenn man von Open-Solaris über HP-UX und Linux in den Geschmacksrichtungen Fedora, Suse, Debian und Ubuntu alles drin hat; jemand der ein Script für /etc/init.d schreibt und jemand der an Installationsscripten bastelt - ja, ja, ja. Da zählt Portabilität, aber wer das macht ist kein Anfänger mehr, und wenn doch, soll der eben mehr kennen als eine Faustformel.

Wenn man sich auf einen kleine gemeinsamen Nenner beschränkt, dann kommt man leichter überall klar. Man braucht beim Schreiben von Skripten auch überraschend wenige Features, die nicht bei POSIX definiert sind. Oft kann man z.B. Skripte ohne andere Arrays schreiben als die, die über $* und $@ im Skript und aufgerufenen Funktionen verfügbar sind. Das ist im Prinzip die gleiche Argumentation wie die, nicht zu viele eigene Shell-Aliase zu definieren: sobald man sich auf einem anderen System einloggt, kommt man nicht mehr klar, weil einem die vertraute Arbeitsumgebung fehlt.

Ein weit verbreiteter Fehler ist ja, dass die Leute /bin/sh irgendwo gesehen haben, das nachmachen, und anderswo bashism gesehen haben, und die auch nachmachen - beides vermischt. Peng!

Der Fehler ist, dass die bash mal erlaubt hat, Nicht-POSIX-Features zu nutzen, wenn man sie nur mit /bin/sh aufruft. Das hat dazu geführt, dass alle Welt da nachlässig war. Ich erinnere mich an größere Schmerzen des Debian-Teams, als sie auf dash (oder ash) umgestellt haben.

Die Beschränkung auf POSIX-Features könnte nur gelingen, wenn man alle User dazu brächte, sich auf POSIX-Features zu beschränken - das macht aber kaum einer. Das ist nicht praktikabel.

Nicht nötig. Es reicht, wenn man sich selbst beschränkt. Und wenn man denn weitere Features benutzt, gibt man halt die entsprechende Shell an.

Man könnte hier auch noch erwähnen, dass man oft Shell-Optionen wie "-f" und "-e" in der Shebang-Zeile findet und welche Vor- oder Nachteile das hat gegenüber dem Einfügen im Skript (als "set -f" z.B.). Gemeint ist natürlich, dass die Optionen dann nur mit Shebang-Aufruf wirken.

Findet man das oft? Ich habe sowas vielleicht 5x in meinem Leben gefunden. Tatsache ist aber, dass es in den Artikel hineingehört, und man es da suchen würde, wenn man es sucht. Wo fügt man es also ein? Ich schau mal. Ich muss ja noch die 'ichs' wegräumen, da ist man ja in der Nähe.

Hm, ich könnte das jetzt nicht sagen, wie oft ich das finde. Aber ich erinnere mich dunkel, dass es auch Beschränkungen beim Inhalt (Länge?) der Shebang-Zeile gibt. Müsste ich noch mal recherchieren, falls Du das nicht auf dem Radar hast. Diese Beschränkungen sind dann auch noch betriebssystemabhängig. Vain hatte ja schon entsprehendes geschrieben.

Bis dann

robert

user_unknown

(Themenstarter)
Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17583

Wohnort: Berlin

Heinrich Schwietering schrieb:

Na, dann auch für dich: Schau doch mal bei Wiki/Referenz und Wiki/Syntax rein 😉

Wird das jetzt ein Quiz?

Hier:

Man trägt zuerst das Datum und sich selbst als Bearbeiter in der Vorlage Baustelle ein:

Das schaut einen an, wenn man "neuen Artikel anlegen" klickt. Von Fertigstellungsdatum steht da nix. Das Datum heißt unter Linux 1.1.1970, dachte ich 😉 .

kaputtnik

Anmeldungsdatum:
31. Dezember 2007

Beiträge: 9245

Servus ☺

Von Fertigstellungsdatum steht da nix

Beim Schreiben des Satzes habe ich mir schon gedacht, das das ungenau ist... aber

"Man trägt zuerst das geplante Fertigstellungsdatum und sich selbst als Bearbeiter in der Vorlage Baustelle ein:"

fand ich dann auch etwas zu lang, obendrein steht in der Vorlage ja "Datum" und nicht Fertigstellungsdatum.

Ich habs jetzt mal geändert.

Gruß
kaputtnik

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

also wenn Artikel zu Shebang, dann bitte aber auch einen allgemeinen Abschnitt. Shebang gibt's schließlich auch Python, Perl, Lua, ... Skripte.

Gruß, noisefloor

Heinrich_Schwietering Team-Icon

Wikiteam
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11322

Wohnort: Bremen

Hi!

user unknown schrieb:

Wird das jetzt ein Quiz?

Hier:

Man trägt zuerst das Datum und sich selbst als Bearbeiter in der Vorlage Baustelle ein:

Das schaut einen an, wenn man "neuen Artikel anlegen" klickt. Von Fertigstellungsdatum steht da nix. Das Datum heißt unter Linux 1.1.1970, dachte ich 😉 .

Jaja, schon klar... Sophist reinster Schule, was?

Ging mir aber auch eher um die Art, wie geschrieben wird, für wen, etc. pp. Eben, was in Wiki/Referenz (Abschnitt „Regeln-fuer-Wikiartikel“) so alles drinsteht...

so long
hank

Heinrich_Schwietering Team-Icon

Wikiteam
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11322

Wohnort: Bremen

Hi1!

noisefloor schrieb:

also wenn Artikel zu Shebang, dann bitte aber auch einen allgemeinen Abschnitt. Shebang gibt's schließlich auch Python, Perl, Lua, ... Skripte.

Was eben auch die Frage aufwirft, wie Ubuntu-relevant das Ganze denn wirklich ist...

so long
hank

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

ja ja - das müssen wir intern mal diskutieren...

Gruß, noisefloor

user_unknown

(Themenstarter)
Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17583

Wohnort: Berlin

Heinrich Schwietering schrieb:

Das schaut einen an, wenn man "neuen Artikel anlegen" klickt. Von Fertigstellungsdatum steht da nix. Das Datum heißt unter Linux 1.1.1970, dachte ich 😉 .

Jaja, schon klar... Sophist reinster Schule, was?

Nein, ja. Doch. Aber nicht hier. Ich habe schon viele Artikel bearbeitet, aber nicht neu erstellt - also war mir nicht klar, was mit dem Datum gemeint ist, und ob eine Fertigstellungsdatumsfrage noch kommt. Ohne weitere Angaben heißt "das Datum" soviel wie heute, und das kann der Rechner ja selbst feststellen - er fragt mich ja auch nach meinem Namen, obwohl der dem System vorliegt.

Ging mir aber auch eher um die Art, wie geschrieben wird, für wen, etc. pp. Eben, was in Wiki/Referenz (Abschnitt „Regeln-fuer-Wikiartikel“) so alles drinsteht...

Für Anfänger.

Antworten |