Re: Re* [PATCH 7/8] ci: run style check on GitHub and GitLab
- From
brian m. carlson <sandals@crustytoothpaste.net>
- Date
- Jul 9, 2024, 00:56 UTC
- Message-ID
- <ZoyK1iZIRVDKQ4-f@tapette.crustytoothpaste.net>
- In-Reply-To
- <xmqqwmlvcx9g.fsf_-_@gitster.g>
On 2024-07-08 at 22:52:11, Junio C Hamano wrote:
Show 18 quoted lines
> Subject: [PATCH] ci: unify bash calling convention > > Under ci/ hierarchy, we run scripts under either "sh" (any Bourne > compatible POSIX shell would work) or specifically "bash" (as they > require features from bash, e.g., $(parameter/pattern/string} > expansion). As we have the CI envionment under our control, we can > expect that /bin/sh will always be fine to run the scripts that only > require Bourne, but we may not know where "bash" gets installed > depending on distros. > > So let's make sure we start these scripts with either one of these: > > #!/bin/sh > #!/usr/bin/env bash > > Yes, the latter has to assume that everybody installs "env" at that > path and not as /bin/env or /usr/local/bin/env, but this currently > is the best we could do.
This seems sensible. We know that /bin/sh is not POSIX-compatible on some proprietary Unices, but we're not targeting those in CI, and Git for Windows, macOS, and all of the major open-source Linux and BSD distros have /bin/sh as a POSIX-compatible shell.
/usr/bin/env bash is also safer than /bin/bash, because bash is not in /usr/bin on most of the BSDs. Every other project I've seen writes /usr/bin/env, so I think that's a fairly safe assumption most places, and I agree that it's the best we can do.
So I think is the right move.
-- brian m. carlson (they/them or he/him) Toronto, Ontario, CA