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.