help-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Shell for evaluating .SHELLFLAGS


From: David Boyce
Subject: Re: Shell for evaluating .SHELLFLAGS
Date: Tue, 26 May 2015 09:15:27 -0700

BTW /usr/bin/env creates a redundant process here. The reason people
use /usr/bin/env to translate an execv() (does not use PATH) to an
execvp() (does). But GNU make uses execvp() already; try "make
SHELL=sh” to see that.

-David Boyce

On Tue, May 26, 2015 at 5:14 AM, Paul Smith <address@hidden> wrote:
> On Mon, 2015-05-25 at 21:05 -0700, Afif Elghraoui wrote:
>> Hello,
>> I am trying to use sqlite3 as my Makefile shell. In order to have the
>> query outputs go to a file, I need to pass a file in to sqlite using its
>> -i flag. I rely on the process substitution feature in bash for the
>> .SHELLFLAGS to provide the file:
>>
>> SHELL=/usr/bin/env sqlite3
>> .SHELLFLAGS=-init <(echo ".output $@") $(DB)
>>
>> I get this error:
>> /bin/sh: 1: Syntax error: "(" unexpected
>> Makefile:13: recipe for target 'fq' failed
>>
>> It looks like .SHELLFLAGS is evaluated with /bin/sh regardless of what
>> SHELL is set to. Is there any way I could evaluate them with bash?
>
> You're missing the main point: the values of SHELL and SHELLFLAGS aren't
> being evaluated by /bin/sh, or bash... they're not being evaluated by
> any shell at all!
>
> The entire point of setting SHELL is you're choosing a shell that make
> will invoke.  Make does not use a shell to start the shell that you
> requested: it invokes the shell you requested directly (using the exec()
> system calls).
>
> The simplest way to do what you want is create a script (outside of
> make) that will operate like this, then set SHELL in your makefile to
> that script.  You can use #!/bin/bash at the top of that script to
> request it be run in bash, if you like.
>
>
> _______________________________________________
> Help-make mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/help-make



reply via email to

[Prev in Thread] Current Thread [Next in Thread]