[openstack-dev] [tripleo] /bin/bash vs. /bin/sh

Petr Blaho pblaho at redhat.com
Tue Apr 15 12:12:58 UTC 2014


On Mon, Apr 14, 2014 at 07:24:57PM +0100, Chris Jones wrote:
> Hi
> 
> Apart from special cases like the ramdisk's /init, which is a script that needs
> to run in busybox's shell, everything should be using bash. There's no point us
> tying ourselves in knots trying to achieve POSIX compliance for the sake of it,
> when bashisms are super useful.

+1, especially for "tying ourselves in knots trying to achieve POSIX compliance for
the sake of it"
> 
> Cheers,
> 
> Chris
> 
> 
> On 14 April 2014 17:26, 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
> 
> 
> 
> 
> --
> Cheers,
> 
> Chris

> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev at lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


-- 
Petr Blaho, pblaho at redhat.com
Software Engineer



More information about the OpenStack-dev mailing list