Warum enden manche Files in /etc/init.d auf .sh?

OP #8067792
Lesenswert?

Mahlzeit!

Ganz unten innen drin ist es egal, ob die Datei eine .sh Endung hat. In /etc/init.d endet ca. ein Dritte auf .sh. Für Zufall oder Tradition ist das viel zu viel, niemand tippt freiwillig 3 unnütze Zeichen ein. Einzige Erklärung: Irgendwo wird der Unterschied für schwarze Magie genutzt, aber wofür?

#8067797
Lesenswert?

Bauform B. schrieb:

Für Zufall oder Tradition ist das viel zu viel, niemand tippt freiwillig 3 unnütze Zeichen ein. Einzige Erklärung: Irgendwo wird der Unterschied für schwarze Magie genutzt, aber wofür?

Eher „Ist halt so und keiner hat’s für nötig befunden, es zu ändern“. Solange die Scripte ausführbar sind, und eine korrekte ›#!‹-Zeile (in Fachkreisen „Shebang“-Zeile genannt, aber das alleine zu nennen, hätte wohl für verständnislose Blicke gesorgt) existiert, gibt es technisch keinen Unterschied. Kannst es ja ausprobieren – dabei drauf achten, dass symbolische Verknüpfungen beim Umbenennen des Ziels kaputtgehen.

Die drei Zeichen zu tippen, stellt hingegen keinen Aufwand dar, der einer Abwägung bedürfte – das nimmt bei jemandem, der mit der Tastatur umgehen kann, nicht einmal ’ne Sekunde in Anspruch und im Zweifelsfall ist die bewusste Entscheidung, es bei einem Shellscript /nicht/ zu schreiben, für jemanden, der’s normalerweise automatisch dranhängt, zeitlich teurer.

Es wäre geschickt gewesen, wenn du das betreffende OS benannt hättest. Musste ein wenig suchen, bis ich hier eines gefunden habe, das überhaupt noch das ›init.d/‹-Verzeichnis hat …

: Bearbeitet durch User
#8067808
Lesenswert?

Jack V. schrieb:

Eher „Ist halt so und keiner hat’s für nötig befunden, es zu ändern“.

würde ich auch so sehen.

Die drei Zeichen zu tippen, stellt hingegen keinen Aufwand dar, der einer Abwägung bedürfte – das nimmt bei jemandem, der mit der Tastatur umgehen kann, nicht einmal ’ne Sekunde in Anspruch

Du tippst die normal sowieso nicht, sondern verwendest einfach schon lange vor dem Ende des Dateinamens die Autocompletion mit Tab. Diese Zeichen spielen also was das Tippen angeht gar keine Rolle.

OP #8067914
Lesenswert?

Jack V. schrieb:

„Ist halt so und keiner hat’s für nötig befunden, es zu ändern“

Gerd E. schrieb:

würde ich auch so sehen.

Ihr seid mir schöne Wissenschaftler ;)

Jack V. schrieb:

Die drei Zeichen zu tippen, stellt hingegen keinen Aufwand dar

Mechanisch nicht, geistig und moralisch schon. Wo sonst hat ausführbares eine Endung? "ls.exe -la" vielleicht?

Aber, nur eine Tasse Kaffee später: Ubuntu 7.1, /etc/init.d/rc

1
# Debian Policy §9.3.1 requires .sh scripts in runlevel S to be sourced
2
# However, some important packages currently contain .sh scripts
3
# that do "exit" at some point, thus killing this process.  Bad!
4
#[ S = "$runlevel" ] && sh=.
5
    for script in $scripts ; do
6
        case "$script" in
7
            *.sh)
8
                startup_progress $debug $sh "$script" $action
9
                ;;
10
            *)
11
                startup_progress $debug "$script" $action
12
                ;;
13
        esac
14
    done

In Debian 8 und 9 hab' ich das nicht mehr gefunden, jetzt spendiert man eben für jedes Script eine extra Shell, der Strom kommt ja aus der Steckdose ;)

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=513955

#8067930
Lesenswert?

Jack V. schrieb:

Bauform B. schrieb:

Für Zufall oder Tradition ist das viel zu viel, niemand tippt freiwillig 3 unnütze Zeichen ein. Einzige Erklärung: Irgendwo wird der Unterschied für schwarze Magie genutzt, aber wofür?

Eher „Ist halt so und keiner hat’s für nötig befunden, es zu ändern“. Solange die Scripte ausführbar sind, und eine korrekte ›#!‹-Zeile (in Fachkreisen „Shebang“-Zeile genannt, aber das alleine zu nennen, hätte wohl für verständnislose Blicke gesorgt) existiert, gibt es technisch keinen Unterschied. Kannst es ja ausprobieren – dabei drauf achten, dass symbolische Verknüpfungen beim Umbenennen des Ziels kaputtgehen.

Werden die Scripte nur via init aufgerufen, braucht es das #!/bin/sh regelmässig nicht, weil ohnehin klar ist, dass sie von /bin/sh gesourced werden (sollten). Benutzt nur jemand etwas anderes als /bin/sh als Loginshell, und ist die nicht hinreichend kompatibel genug zu /bin/sh, und will unbedingt eines der Skripte von Hand starten: Ja, da ist das #!/bin/sh dann natürlich hilfreich. Der Suffix .sh ist dagagen für überhaupt nichts gut. ☺

#8067931
Lesenswert?

Bauform B. schrieb:

Mechanisch nicht, geistig und moralisch schon.

Gerade geistig ist der Aufwand höher, es nicht zu schreiben. Zumindest mit Leuten, die’s halt so gelernt haben. Und was genau wäre die moralische Komponente?

Bauform B. schrieb:

Wo sonst hat ausführbares eine Endung? "ls.exe -la" vielleicht?

Falsches System? Die Endung bei Scriptfiles ist lediglich ’n Hinweis für die Shell, welcher Interpreter zu nutzen wäre; aufgrund der Shebang-Zeile ist’s heute eher ein Hinweis für den User. Ausführbare Binaries hatten hier hingegen noch nie eine entsprechende Endung

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=513955

Spräche ja dafür, dass die Scripte von damals halt ihren Namen behalten haben. Insbesondere sind’s zumindest auf dem System, auf dem ich nachgeschaut habe (du verweigerst ja leider die Angabe des Systems, auf das du dich beziehst) von Debian stammende Scripte, welche die Endung haben.

Bauform B. schrieb:

jetzt spendiert man eben für jedes Script eine extra Shell, der Strom kommt ja aus der Steckdose ;)

In welchem Jahrzehnt bist du denn hängengeblieben? Jetzt macht systemd den Job – und man kann dem viel vorwerfen – aber dass es den Systemstart ineffizient gestalten würde, gehört nicht dazu.

Bauform B. schrieb:

Ihr seid mir schöne Wissenschaftler

Joa … sorry, dass wir versucht haben, dir bei der Beantwortung deiner Frage zu helfen. Kommt zumindest von mir nicht mehr vor (wenn ich dran denke, ansonsten halt vielleicht schon).

OP #8067975
Lesenswert?

Jack V. schrieb:

du verweigerst ja leider die Angabe des Systems, auf das du dich beziehst

Die Frage ist ja System-unabhängig, die Suchmaschine kannte auch passende Fundstellen bei FreeBSD. Der Beweis, dass es mal nicht egal war, ist von Ubuntu 7.1; in Debian 8 "Jessie" und Debian 9 "Stretch" war das schon auf dem heutigen Stand. Aktueller Anlass ist die Debian-Installation auf dem PC, der heute ankam; Forky auf dem Umweg über Trixie, natürlich mit sysvinit :)

Jetzt macht systemd den Job

oder irgendein anderes init

– und man kann dem viel vorwerfen – aber dass es den Systemstart ineffizient gestalten würde, gehört nicht dazu.

Ich rede ja auch nicht von systemd. Immerhin habe ich gerade einen echten Nachteil von sysvinit gefunden.

OP #8068752
Lesenswert?

Rbx schrieb:

Bauform B. schrieb:

Irgendwo wird der Unterschied für schwarze Magie genutzt, aber wofür?

Eventuell für Editoren. Kann eigentlich nur einen Verwaltungshintergrund haben.

Kuckst du hier:

Bauform B. schrieb:

Debian Policy §9.3.1 requires .sh scripts in runlevel S to be sourced However, some important packages currently contain .sh scripts that do "exit" at some point, thus killing this process. Bad!

#8068802
Lesenswert?

Naja … immerhin kann man sich bei Stretch / Debian 9 nicht mehr vom Root-Account ausschließen – da gibt’s ja nun einen Stapel nutzbarer Lücken. Wenn man dann noch bisschen Software aus der Zeit übers Netz erreichbar hat, kann man sich u.U. auch von überall aus einloggen.

#8068928
Lesenswert?

Cartman E. schrieb:

Der Suffix .sh ist dagagen für überhaupt nichts gut.

Finde ich nicht. Sieht man als Benutzer wenigstens sofort, dass es sich um ein Shell-Script handelt. Klar, für das System selber is der Suffix irrelevant. Aber wenn man mit einem System nur auf der Kommandozeile arbeitet, zum Beispiel ein Server, wo 'ls --color' was auf den meisten GNU/Linux Distributionen zwar standardmäßig aktiviert ist, aber auf Systemen wie OpenBSD nicht, dann sind die zusätzlichen Zeichen im Dateinamen schon hilfreich.

Das ist aber meine persönliche Meinung.

#8068963
Lesenswert?

Johannes schrieb:

Sieht man als Benutzer wenigstens sofort, dass es sich um ein Shell-Script handelt.

Und das Schöne dabei ist, man kann jede nur erdenkliche Datei so aussehen lassen wie man will. Doch, wie so oft, der Schein kann trügerisch sein. Erinnert fast an ein anderes OS…

Wenn man skeptisch ist, dann hat man ja immer noch ›file *‹ um zu sehen was es tatsächlich beinhaltet.

Beitrag #8069337 wurde vom Autor gelöscht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren