Next: Parallel Prev: Echoing Up: Commands
When it is time to execute commands to update a target, they are
executed by making a new subshell for each line. (In practice, `make'
may take shortcuts that do not affect the results.)
*Please note:* this implies that shell commands such as `cd' that
set variables local to each process will not affect the following
command lines. If you want to use `cd' to affect the next command, put
the two on a single line with a semicolon between them. Then `make'
will consider them a single command and pass them, together, to a shell
which will execute them in sequence. For example:
foo : bar/lose
cd bar; gobble lose > ../foo
If you would like to split a single shell command into multiple
lines of text, you must use a backslash at the end of all but the last
subline. Such a sequence of lines is combined into a single line, by
deleting the backslash-newline sequences, before passing it to the
shell. Thus, the following is equivalent to the preceding example:
foo : bar/lose
cd bar; \
gobble lose > ../foo
The program used as the shell is taken from the variable `SHELL'.
By default, the program `/bin/sh' is used.
Unlike most variables, the variable `SHELL' is never set from the
environment. This is because the `SHELL' environment variable is used
to specify your personal choice of shell program for interactive use.
It would be very bad for personal choices like this to affect the
functioning of makefiles. *Note Variables from the Environment:
automatically generated by info2www