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 Help-make@gnu.org https://lists.gnu.org/mailman/listinfo/help-make