Handling of shell builtins in make(1)

Sam Lawrance boris at brooknet.com.au
Mon May 23 07:10:08 PDT 2005


On Mon, 2005-05-23 at 15:51 +0200, Harti Brandt wrote:
> Hi all,
> 
> I think I found a problem in the shell code in make(1), but I'm not sure 
> whether to fix it or not and how. The problem is as follows: in compat 
> mode (this is the default mode when make(1) is not called with -j) the 
> command lines of a target are executed by one shell per line (this is also 
> how Posix wants it). To reduce the number of shells make does an 
> optimisation: when the command line does not contain one of a pre-defined 
> set of meta characters and does not start with one of a predefined set of 
> shell builtins, make directly exec's the command instead of using an 
> intermediate shell. The problem is that the current list of builtins is 
> limited to:
> 
>    alias cd eval exec exit read set ulimit unalias umask unset wait
> 

That explains some of ports/66342 for me.. in particular why setting
"ECHO_CMD=echo -e" didn't perform entirely as I expected.





More information about the freebsd-arch mailing list