On 2024-07-08 at 22:52:11, Junio C Hamano wrote: > 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
Attachment:
signature.asc
Description: PGP signature