[openstack-dev] [tripleo] /bin/bash vs. /bin/sh
Ben Nemec
openstack at nemebean.com
Mon Apr 14 17:17:03 UTC 2014
On 04/14/2014 11:53 AM, Doug Hellmann wrote:
> As someone who maintains a shell-script project across several
> "sh-like" shells, I can say the edge cases cause enough work and
> testing hassles that you shouldn't undertake it lightly. Is there any
> particular need to run these tools under a non-bash shell?
I don't have one, but I've seen a few changes proposed to make the
scripts work with other shells (although in at least one case I believe
it was in a script explicitly using bash, so I'm not sure what the
purpose was...). And those edge cases are why I would like to stop
trying to support not-bash unless someone else wants to step up and own
that effort.
Thanks for the input.
-Ben
>
> Doug
>
> On Mon, Apr 14, 2014 at 12:26 PM, Ben Nemec <openstack at nemebean.com> wrote:
>> tldr: I propose we use bash explicitly for all diskimage-builder scripts (at
>> least for the short-term - see details below).
>>
>> This is something that was raised on my linting changes to enable set -o
>> pipefail. That is a bash-ism, so it could break in the diskimage-builder
>> scripts that are run using /bin/sh. Two possible fixes for that: switch to
>> /bin/bash, or don't use -o pipefail
>>
>> But I think this raises a bigger question - does diskimage-builder require
>> bash? If so, I think we should just add a rule to enforce that /bin/bash is
>> the shell used for everything. I know we have a bunch of bash-isms in the
>> code already, so at least in the short-term I think this is probably the way
>> to go, so we can get the benefits of things like -o pipefail and lose the
>> ambiguity we have right now. For reference, a quick grep of the
>> diskimage-builder source shows we have 150 scripts using bash explicitly and
>> only 24 that are plain sh, so making the code truly shell-agnostic is likely
>> to be a significant amount of work.
>>
>> In the long run it might be nice to have cross-shell compatibility, but if
>> we're going to do that I think we need a couple of things: 1) Someone to do
>> the work (I don't have a particular need to run dib in not-bash, so I'm not
>> signing up for that :-) 2) Testing in other shells - obviously just changing
>> /bin/bash to /bin/sh doesn't mean we actually support anything but bash. We
>> really need to be gating on other shells if we're going to make a
>> significant effort to support them. It's not good to ask reviewers to try
>> to catch every bash-ism proposed in a change. This also relates to some of
>> the unit testing work that is going on right now too - if we had better unit
>> test coverage of the scripts we would be able to do this more easily.
>>
>> Thoughts?
>>
>> Thanks.
>>
>> -Ben
>>
>> _______________________________________________
>> OpenStack-dev mailing list
>> OpenStack-dev at lists.openstack.org
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
More information about the OpenStack-dev
mailing list