ubuntuusers.de

Dash statt Bash

Status: Gelöst | Ubuntu-Version: Ubuntu 6.10 (Edgy Eft)
Antworten |

pistenstuermer

Avatar von pistenstuermer

Anmeldungsdatum:
24. Dezember 2004

Beiträge: 276

Wollte gerade auf Edgy NXserver installieren, und hab festgestellt, dass das Startskript mit einem Fehler abbricht. Beim Nachforschen stieß ich dann darauf, dass /bin/sh mit dash verlinkt ist... Was ist das für eine Shell? Nie gehört... Und was passiert wenn ich den Link jetzt auf Bash setze? Läuft dann kein Edgy mehr? 😉 Ich kann natürlich bash in die NX-Skripte einbauen, ich fürchte aber dass das bei weiteren Paketen Probleme machen könnte?

Superdreadnought

Anmeldungsdatum:
31. Mai 2006

Beiträge: 563

http://packages.debian.org/unstable/shells/dash.html hat geschrieben:

The Debian Almquist Shell

"dash" is a POSIX compliant shell that is much smaller than "bash". We take advantage of that by making it the shell on the installation root floppy, where space is at a premium.

It can be usefully installed as /bin/sh (because it executes scripts somewhat faster than "bash"), or as the default shell either of root or of a second user with a userid of 0 (because it depends on fewer libraries, and is therefore less likely to be affected by an upgrade problem or a disk failure). It is also useful for checking that a script uses only POSIX syntax.

"bash" is a better shell for most users, since it has some nice features absent from "dash", and is a required part of the system.

Wenn du nicht umhin kommst wird es vermutlich nichts ausmachen wenn du den link auf bash änderst.

Lunar

Anmeldungsdatum:
17. März 2006

Beiträge: 5792

Zu Superdreadnought's Ausführung ist noch hinzuzufügen, dass die dash Shell imo nichts taugt.
Bei einigen selbstgeschriebenen Skripten gab es selbst bei einfachen if-Konstruktionen Syntaxfehler. Du solltest den Link schnellstmöglich auf die bash setzten.
Die bash ist eben die Standardshell und kaum ein Programmierer testet seine Skripte gegen andere Shells, die unter /bin/sh verlinkt sind. Deswegen kommt auch niemand auf die Idee, seine Skripte streng an den Posixstandard anzupassen und eventuell auf schöne, aber inkompatible Konstrukte zu verzichten...

SirSiggi

Avatar von SirSiggi

Anmeldungsdatum:
12. September 2005

Beiträge: 823

Es geht wohl eher darum das man eigentlich #!/bin/bash setzen sollte wenn man die Bash-Features benötigt und #!/bin/sh wenn die einfache POSIX-Kompatibilität ausreicht.

Lunar

Anmeldungsdatum:
17. März 2006

Beiträge: 5792

SirSiggi hat geschrieben:

Es geht wohl eher darum das man eigentlich #!/bin/bash setzen sollte wenn man die Bash-Features benötigt und #!/bin/sh wenn die einfache POSIX-Kompatibilität ausreicht.

bash verhält sich, wenn sie über /bin/sh angesprochen wird, wie eine POSIX Shell. dash versucht ebenfalls, eine POSIX Shell bereit zu stellen, scheitert nach meiner Erfahrung (und offenbar auch nach der von pistenstuermer) bereits an einfachen Konstrukten in POSIX Skripten, welche die bash auch als /bin/sh problemlos ausführt.
Daraus lässt sich schließen:

  1. dash ist eben doch nicht so kompatibel, wie es gerne sein mmöchte#

  2. oder bash erlaubt als /bin/sh doch mehr Dinge als der POSIX Standard definiert

Tatsache bleibt allerdings, dass dash als /bin/sh viele Skripte nicht ausführt, während bash las /bin/sh auch bei diesen Skripten klaglos ihren Dienst verrichtet.

Doener

Avatar von Doener

Anmeldungsdatum:
13. April 2006

Beiträge: 1647

Wohnort: Berlin

dash macht auch in Kombinantion mit cedega Schwierigkeiten. Abhilfe, falls stattdessen klassisch bash eingesetzt werden soll:

dpkg-reconfigure dash

Und "nein" auswählen.

pistenstuermer

(Themenstarter)
Avatar von pistenstuermer

Anmeldungsdatum:
24. Dezember 2004

Beiträge: 276

Danke für die aufschlussreichen Antworten, da frage ich mich doch aber wieso Ubuntu standardmässig (offenbar seit Edgy?) die Dash einsetzt???...

SirSiggi

Avatar von SirSiggi

Anmeldungsdatum:
12. September 2005

Beiträge: 823

Lunar hat geschrieben:

bash verhält sich, wenn sie über /bin/sh angesprochen wird, wie eine POSIX Shell. dash versucht ebenfalls, eine POSIX Shell bereit zu stellen, scheitert nach meiner Erfahrung (und offenbar auch nach der von pistenstuermer) bereits an einfachen Konstrukten in POSIX Skripten, welche die bash auch als /bin/sh problemlos ausführt.
Daraus lässt sich schließen:

  1. dash ist eben doch nicht so kompatibel, wie es gerne sein mmöchte#

  2. oder bash erlaubt als /bin/sh doch mehr Dinge als der POSIX Standard definiert

Tatsache bleibt allerdings, dass dash als /bin/sh viele Skripte nicht ausführt, während bash las /bin/sh auch bei diesen Skripten klaglos ihren Dienst verrichtet.

Also angeblich (laut Debian, Autor und Wikipedia) ist die dash (ein Port der NetBSD ash auf Linux) voll POSIX kompatibel, aber eben auch nicht mehr. Verifizieren kann ich das natürlich nicht. Meistens wird es aber wohl einfach so sein das der zuständige Entwickler /bin/sh auf /bin/bash gelinkt hat und unbewusst Bash-Features nutzt, die eben über POSIX hinausgehen.

Lunar

Anmeldungsdatum:
17. März 2006

Beiträge: 5792

SirSiggi hat geschrieben:

Meistens wird es aber wohl einfach so sein das der zuständige Entwickler /bin/sh auf /bin/bash gelinkt hat und unbewusst Bash-Features nutzt, die eben über POSIX hinausgehen.

Aber so weit ich weiß sollte die bash, so sie als /bin/sh angesprochen wird, auch nur POSIX Features unterstützen und eben keine ihrer erweiterten Fähigkeiten bereitstellen.
Das kann ich allerdings auch nicht verifizieren. Gut wärs jetzt, wenn man wüsste, was POSIX dazu sagt... 😉

Sid_Burn

Anmeldungsdatum:
23. Oktober 2004

Beiträge: 2159

Lunar hat geschrieben:

Gut wärs jetzt, wenn man wüsste, was POSIX dazu sagt... 😉

http://www.opengroup.org/onlinepubs/009695399/
Aus dem Linken oberen Frame "Shell & Utilities", danach bekommt man im links unteren Frame einzelne Punkte angegeben.

SirSiggi

Avatar von SirSiggi

Anmeldungsdatum:
12. September 2005

Beiträge: 823

Damit wir hier nicht dumm sterben müssen hab ich kurz mal den Suchmaschinenmonopolisten meines Misstrauens befragt: http://www.network-theory.co.uk/docs/bashref/bashref_69.html

Es sieht also so aus als werden nur einzelne Verhaltensweisen geändert, alles andere bleibt wohl erhalten.

ranf

Anmeldungsdatum:
3. Dezember 2005

Beiträge: 580

pistenstuermer hat geschrieben:

Danke für die aufschlussreichen Antworten, da frage ich mich doch aber wieso Ubuntu standardmässig (offenbar seit Edgy?) die Dash einsetzt???...

Das wurde von Debian eingeführt (hauptsächlich um die Boot-Zeiten zu drücken):
http://www.debian.org/News/weekly/2006/22/

comm_a_nder

Avatar von comm_a_nder

Anmeldungsdatum:
5. Februar 2006

Beiträge: 2533

Wohnort: Dresden

ranf hat geschrieben:

Das wurde von Debian eingeführt (hauptsächlich um die Boot-Zeiten zu drücken):
http://www.debian.org/News/weekly/2006/22/

Nur, weil das mal einer vorschlägt wird es nicht gleich umgesetzt. In etch ist /bin/sh imer noch ein Link auf bash.

ranf

Anmeldungsdatum:
3. Dezember 2005

Beiträge: 580

Ok, dann ist das pure Fehlinformation meinerseits. Danke für den Hinweis.

d1rk

Anmeldungsdatum:
5. April 2006

Beiträge: 2420

pistenstuermer hat geschrieben:

Wollte gerade auf Edgy NXserver installieren, und hab festgestellt, dass das Startskript mit einem Fehler abbricht. Beim Nachforschen stieß ich dann darauf, dass /bin/sh mit dash verlinkt ist... Was ist das für eine Shell? Nie gehört...

Eine Funktionsverstümmelte bash, wenn ich das richtig verstehe... Da lob' ich mir Dapper 😉

icewind@dirk-laptop:/bin$ ls -l | grep sh
-rwxr-xr-x 1 root root  664084 2006-04-22 00:51 bash
lrwxrwxrwx 1 root root       4 2006-06-02 23:35 rbash -> bash
lrwxrwxrwx 1 root root       4 2006-06-02 23:35 sh -> bash


Da ist nämlich noch alles in Ordnung...

Was würde eigentlich passieren, wenn ich die (imho) fehlerhafte verlinkung von sh auf "bash" (imho) korrigiere?

Antworten |