[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: /bin/sh naar bash i.p.v. dash linken



On Sun, Dec 27, 2020 at 07:15:02PM +0100, Geert Stappers wrote:
> On Sat, Dec 26, 2020 at 09:13:23PM +0200, Wouter Verhelst wrote:
[...]
> > De reden dat /bin/sh naar dash verwijst, en niet naar bash, is omdat:
> > 
> > - dash sneller opstart,
> > - je als je /bin/sh zegt, je alleen commando's zou mogen gebruiken die
> >   effectief door POSIX als onderdeel van de sh interface gedefinieerd is
> >   en er dus geen verschil zou mogen zijn,
> > 
> > Het gebruik van bash-specifieke functies in een /bin/sh script is niet
> > portable. Op elk systeem dat een andere shell gebruikt dan bash als
> > /bin/sh zal dat niet werken.
> 
> Hoe dat kan?   bash is tien keer groter dan dash?

Dat ondersteunt mijn eerste punt.

Ik begrijp niet goed wat je vraag is? Of bevestig je gewoon wat ik zeg?

> " $ ls -l $(which bash) $(which dash)
> " -rwxr-xr-x 1 root root 1254856  4 nov 18:01 /bin/bash
> " -rwxr-xr-x 1 root root  125560 12 nov 08:58 /bin/dash
>  
> > FreeBSD heeft in de default configuratie bijvoorbeeld bash zelfs niet
> > geïnstalleerd staan.
> > 
> > Op macOS is de default shell lang bash geweest, maar dat is nooit
> > geüpgradet geweest toen bash naar GPLv3 gegaan is (dus de default bash
> > op macOS is nu wel *heel* erg oud), en ze zijn daar recent op zsh
> > overgestapt.
> > 
> > Het "probleem" dat /bin/sh niet bash is, is dus zeker niet
> > Debian-specifiek.
> > 
> > Bij Debian is op een bepaald moment de symlink van bash naar dash
> > verplaatst geweest. Dat is expliciet gelimiteerd op de versie-overgang
> > waarbij dat aangezet is. Het is dus maar één keer, en het terugzetten is
> > ook een ondersteunde configuratie (i.e., als je dat nodig hebt mag je
> > het gewoon doen).
> 
> De pijn van het terugzetten komt pas als je het shell script wat
> voor jou werkt ( want /bin/sh link naar /bin/bash verbergt bashism features) 
> niet werkt voor de ander ( want /bin/sh link naar /bin/dash )

Het is natuurlijk zo dat als je een script draait dat bashismen
gebruikt, het enkel onder bash werkt. Maar als je dat niet doet, dan zou
het zowel onder dash als onder bash moeten werken.

En als je #!/bin/sh gebruikt in het begin van je script, dan zeg je
eigenlijk dat je probeert om met elke /bin/sh te werken, en dan maakt
het ook niet uit welke sh-implementatie je gebruikt.

-- 
To the thief who stole my anti-depressants: I hope you're happy

  -- seen somewhere on the Internet on a photo of a billboard


Reply to: