:: Re: [DNG] vdev packaging effort ( w…
Top Page
Delete this message
Reply to this message
Author: Didier Kryn
Date:  
To: dng
Subject: Re: [DNG] vdev packaging effort ( was: state of what's working for modern desktop usage)
Le 10/02/2016 23:37, Rainer Weikusat a écrit :
> Didier Kryn <kryn@???> writes:
>> Le 10/02/2016 18:50, Rainer Weikusat a écrit :
>>> Didier Kryn <kryn@???> writes:
>>>
>>> [...]
>>>
>>>>       2) At the time of this test campaign, the shebang line of vdev
>>>> scripts was #!/bin/dash, which doesn't work in Busybox. It should be
>>>> replaced by #!/bin/sh which works in all cases.
>>> This isn't necessarily true. Both dash and the usual busybox sh are
>>> forks of the Amquist shell (ash) which is supposed to be enable to
>>> execute scripts written in the Bourne shell language/ for the
>>> standardized /bin/sh but they also provide extensions of their own (eg,
>>> like bash, dash supports lexically scoped function variables but the
>>> Bourne/ standard shell doesn't). The busybox ash can also compiled w/o
>>> certain features, eg, arithmetic expansion.

>>>
>>> 'Replacing /bin/dash with /bin/sh' will only work if the author of the
>>> script use the non-standard name because he doesn't knew any better
>>> instead of because the script actually uses dash features.
>>>
>>      There's no theory behind that. It's just practical and the result
>> of experimenting.

>>
>>      The way Busybox works is all applications are links to
>> /bin/busybox. When invoqued, /bin/busybox
> ... looks at argv[0] and invokes the corresponding embedded
> program. "Everybody knows that" (well, not everybody but everybody who
> ever worked with busybox) .

>
>>      On the other hand, the default shell in Debian, the one invoked by
>> /bin/sh, is dash. I guess in every distro /bin/sh points to the
>> ~POSIX-compliant shell. Therefore '#!/bin/sh' should just work
>> everywhere.
> It should be the name of a shell capable of running Bourne/ standard
> shell scripts. But this may not work if the /bin/dash in the original
> script was there for a reason, ie, it was using dash features.

>

     As I already wrote, vdev was working well with busybox's ash., 
replacing 'dash' with 'sh' in the shebang.


     If the question is why Jude replaced /bin/sh with /bin/dash in the 
middle of the development, I think it was to make sure to not invoke 
bash. But (sorry for the repetition) I used to modify the shebang 
everytime I tested a new version, and there was never any issue with the 
shell.


     Another possibility would be to write a wrapper script called 
/bin/dash, like
#! /bin/sh
exec /bin/sh $@


                                 Didier