dash

Constantine Evans constantine at evanslabs.org
Fri Sep 15 19:57:08 BST 2006


It should also be noted that even ignoring the speed increases in shell
scripts, using dash for /bin/sh should also cause significant speed
increases in python scripts making heavy use of os.system(), and ruby
scripts using system(), and so on, unless I am mistaken about their use
of /bin/sh.

Constantine Evans

Micah J. Cowan wrote:
> On Thu, Sep 14, 2006 at 04:18:46PM -0500, Rocco Stanzione wrote:
>> That reduces my argument to what it was before trying to find info on what 
>> POSIX had to say about it: that bash has proliferated so much, for so long, 
>> as the target of /bin/sh that the expectation has proliferated with it, not 
>> only in shell scripts that mistakenly say #!/bin/sh but in Makefiles (as in 
>> iptables, and GNU make doesn't inherit the SHELL variable - it's /bin/sh) 
>> where it's apparently also a mistake to use non-POSIX-compliant shell 
>> language, and likely in other places as well.
>>
>> Again, in Ubuntu packages, scripts (and Makefiles) can be and have been fixed 
>> to accommodate dash, but 3rd party applications not packaged by Ubuntu don't 
>> have this benefit and can be hard to diagnose when they break.  To complicate 
>> matters, even if you think you've fixed a problem by changing #!/bin/sh to 
>> #!/bin/bash at the top of a script, bash (still the default user shell) has 
>> cached sh as the way to call the script, and it will fail in the same way 
>> until you say something like "bash /path/to/script".
> 
> This is completely untrue. If you put #!/bin/bash in there, /bin/bash is
> what will interpret it.
> 
> At any rate, it's still certainly a bug on the part of those 3rd parties
> you mention, if they expect anything from sh beyond POSIX compliance.
> 
>> So, my opinion is that dash-as-sh is not worth the real and potential problems 
>> it causes.  I've only ever thought bash was slow-ish as a login shell, and 
>> that was due to bash-completion and my somewhat heavy .bashrc, and these 
>> aren't issues when running shell scripts.  Picking a few scripts basically at 
>> random and timing them with bash vs. dash, the biggest difference I've seen 
>> is 2ms, and those differences disappear altogether if I time them from within 
>> dash.
> 
> I don't understand your last sentence there, it doesn't make much sense
> to me for that to be true.
> 
> Your points are valid, but they were already known, and they come too
> late anyway. Much, much work has already gone in to fixing packages that
> had broken assumptions about /bin/sh.
> 
> The major reason, IIRC, that the change was approved, is that it tore a
> rather significant number of seconds off of boot time (init.d scripts).
> 




More information about the ubuntu-devel mailing list