[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Shell for evaluating .SHELLFLAGS
From: |
Paul Smith |
Subject: |
Re: Shell for evaluating .SHELLFLAGS |
Date: |
Tue, 26 May 2015 08:14:22 -0400 |
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.
- Shell for evaluating .SHELLFLAGS, Afif Elghraoui, 2015/05/26
- Shell for evaluating .SHELLFLAGS, Afif Elghraoui, 2015/05/26
- RE: Shell for evaluating .SHELLFLAGS, Cook, Malcolm, 2015/05/26
- RE: Shell for evaluating .SHELLFLAGS, Cook, Malcolm, 2015/05/26
- Re: Shell for evaluating .SHELLFLAGS, Afif Elghraoui, 2015/05/26
- Re: Shell for evaluating .SHELLFLAGS, Afif Elghraoui, 2015/05/26
- RE: Shell for evaluating .SHELLFLAGS, Cook, Malcolm, 2015/05/26