(gelöst) dash

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
guennid

(gelöst) dash

Beitrag von guennid » 22.10.2019 12:23:45

Worauf ich erst in einem anderen Zusammenhang (1) gestoßen bin:
Dash steht für Debian Almquist Shell. Die Dash ist kleiner und schneller als z.B. die Bash und erfüllt vollständig die POSIX-Spezifikation. Seit Ubuntu 6.10 ist die Dash die Standard nicht-interaktive Shell von Ubuntu. Dies wird erreicht, indem /bin/sh ein Symlink auf /bin/dash ist.
(2) Das gilt ja wohl auch für Debian: dash=Standard-Shell.

Frage, wann benutzt ein unbedarfter User wie ich eigentlich diese "Nicht-interaktive Shell"? - Womöglich ohne es jemals zu merken?

(1) viewtopic.php?f=29&t=175083&hilit=sed
(2) https://wiki.ubuntuusers.de/Dash/

Grüße, Günther
Zuletzt geändert von guennid am 23.10.2019 09:11:27, insgesamt 2-mal geändert.

uname
Beiträge: 12046
Registriert: 03.06.2008 09:33:02

Re: dash

Beitrag von uname » 22.10.2019 13:42:39

Laut https://wiki.debian.org/Shell ist es nicht "intended" / "beabsichtigt", dass man Dash interaktiv nutzt.
Es ist wohl mehr dafür, dass Scripte basierend auf /bin/sh (-> dash statt bash) schneller werden und weniger Speicher brauchen.

In /etc/passwd gebe ich allen Benutzern immer Bash. Eigentlich haben alle Rechner genug Speicher.
Dash statt Bash zu verwenden war eine ziemlich dumme Idee.

Du kannst die Shell ermitteln:

Code: Alles auswählen

env|grep SHELL

Die Standardshell würde im übrigen nicht wie im Ubuntuusers-Link von dir aufgeführt ändern.
Beim nächsten Installieren hat man es vergessen und sucht wieder ewig.

guennid

Re: dash

Beitrag von guennid » 22.10.2019 14:04:47

uname hat geschrieben:Dash statt Bash zu verwenden war eine ziemlich dumme Idee.
Ich gehe davon aus, du meinst, Debians die Verlinkung von /bis/sh auf /bin/dash sei eine „dumme Idee“ gewesen.Das sähe ich aufgrund der gemachten Erfahrungen z.Z. genauso. Aber vielleicht kommt ja noch jemand mit tieferem Einblick und erleuchtet uns. :wink:

Solltest du meinen, dass es in meinem Link eine „dumme Idee“ gewesen sei, dash zu verwenden, dann möchte ich insofern widersprechen, als das gar nicht meine Idee war, sondern im Gegenteil: meine "Idee" war, mit /bin/sh /bin/bash zu benutzen, weil ich nicht wusste, dass /bin/sh gar nicht auf /bin/bash zeigt.

Grüße, Günther

edit: sinnentstellendes „die“ durchgestrichen (das Übliche: copy and paste-Fehler)
Zuletzt geändert von guennid am 22.10.2019 17:36:31, insgesamt 1-mal geändert.

JTH
Moderator
Beiträge: 3015
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: dash

Beitrag von JTH » 22.10.2019 14:14:14

guennid hat geschrieben: ↑ zum Beitrag ↑
22.10.2019 12:23:45
Frage, wann benutzt ein unbedarfter User wie ich eigentlich diese "Nicht-interaktive Shell"? - Womöglich ohne es jemals zu merken?
Direkt benutzt du sie vermutlich nie. Deshalb ist es auch normalerweise „nur“ die vorgegebene nicht-interaktive Shell. Ein normaler Benutzer bekommt normalerweise, wie uname schreibt, als (Login-)Shell (für TTY1 etc.) die Bash.

Ein Anliegen für die dash-Entwicklung war, meine ich, den Aufruf der klassischen Initscripte schneller zu machen. Von denen müsstest du ja, ohne systemd, im Hintergrund einige am Laufen haben. Wenn dort die (erste) Shebang-Zeile

Code: Alles auswählen

#!/bin/sh
ist, läuft das Initscript mit der dash – vorausgesetzt, man hat den Symlink /bin/sh nicht auf etwas anderes verbogen.

Und wenn du die Dash mal ausprobieren möchtest: Einfach sh oder dash im Terminal ausführen ;)

Code: Alles auswählen

user@host:~$ dash
$
Wie man direkt sieht, fehlen dann einige „interaktiv“ gewohnte Dinge.
Manchmal bekannt als Just (another) Terminal Hacker.

wanne
Moderator
Beiträge: 7448
Registriert: 24.05.2010 12:39:42

Re: dash

Beitrag von wanne » 22.10.2019 14:52:20

Die Warnung dass man nicht mit der bash rechnen soll und POSIX-Konfrom schreiben soll ist alt. Es gab immer wieder Distributionen, die die bash ersetzt haben.
Allen voran sind das Nicht-Linux unixe wie z.B. BSDler die gerne mit ksh oder (t)csh kommen.
Dann war es kurz mal in in Linux-Distros die zsh zu shippen. IM Moment kommt gerade die fish auf. Warten bis die erste Distro das als default setzt.
Auf den meisten kleineren Geräten läuft irgend eine busybox-shell bzw. die ash.
Die meisten Handys kommen mit ganz abstrusen Sachen.
Der Befehl im Beitrag viewtopic.php?f=29&t=175083 hätte auch auf einer etwas älteren bash nicht funktioniert. Hast du ein OS X oder ein Lenny geht das schlicht wegen der zu alten Version kaputt.
Kurz es ist einfach eine dumme Idee bash-spezialitäten in Shellskripte zu stecken. Das macht deswegen auch kaum jemand. Guck einfach mal im Internet um: Egal ob configure oder initscript: Alles POSIX-Konform. Und wenn du eh nur POSIX machst, braucht die dash halt ein drittel der Rechenleistung und ein fünfzigstel des Speichers. Kurz: Für 99% der Nutzer ist sie einfach das um eine Größenordnung bessere Tool.
rot: Moderator wanne spricht, default: User wanne spricht.

uname
Beiträge: 12046
Registriert: 03.06.2008 09:33:02

Re: dash

Beitrag von uname » 22.10.2019 16:15:22

@guennid Bezog sich auf Debian und nicht auf dein Problem.

guennid

Re: dash

Beitrag von guennid » 23.10.2019 09:10:36

Ich denke, ich hab's verstanden.

Grüße, Günther

Antworten