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

Ryan Brady rbrady at redhat.com
Tue Apr 15 12:27:32 UTC 2014


----- Original Message -----
> From: "Chris Jones" <cmsj at tenshu.net>
> To: openstack at nemebean.com, "OpenStack Development Mailing List (not for usage questions)"
> <openstack-dev at lists.openstack.org>
> Sent: Monday, April 14, 2014 2:24:57 PM
> Subject: Re: [openstack-dev] [tripleo] /bin/bash vs. /bin/sh
> 
> 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 for the pragmatic approach.

> 
> 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
> 



More information about the OpenStack-dev mailing list