Re: using $(shell some sh command) when .SHELL has been (temporarily) set to non
Dmitry Goncharov <[email protected]> Wed, 9 Apr 2025 07:44:46 -0400
| Newsgroups | gmane.comp.gnu.make.general |
|---|---|
| Message-ID | <CAG+Z0CtQ9JL9myvE1+j_m_MgCHRDVTunZcOz+UvPUnfPfNKb0A@mail.gmail.com> |
On Thu, Apr 3, 2025 at 3:35 PM Cook, Malcolm <[email protected]> wrote: > > I expect GNU make is working as expected, but I could use confirmation .... > > I was surprised when setting SHELL (e.g. to `duckdb`) to find that a simply expanded variable that expands to $(shell some sh command) wound up passing 'my sh command' to duckdb rather than /bin/sh since It was expanded as part of a recipe that sets SHELL as a target specific variable for that recipe. > > Should this behavior be considered "by design"? > > My workaround was to instead use $(call sh,some sh command), where sh is defined as: > > sh=$(let SHELL .SHELLFLAGS,/bin/sh -eu -o pipefail -c,$(shell $1)) > > Is there perhaps a better workaround? > Can you post the makefile code? regards, Dmitry