Makefile - Why is the read command not reading the user input?
Using .ONESHELL makes multiline commands easier to read then using ';' and '\' to separate lines:
.ONESHELL:
my-target:
echo "What is the root directory of your webserver? Eg. ~/Server/htdocs"
read root_path
echo $$root_path
I don't have enough karma to post comments, therefore an answer (which should've been a comment to the accepted answer):
The immediate problem is that Make itself interprets the $
differently than the shell does. Try:
echo "What is the root directory of your webserver? Eg. ~/Server/htdocs"; \
read root_path; \
echo $$root_path
The double $$
escapes the $
for Make, so it passes the single $
through to the shell. Note also that you will need to use \
line continuations so that the whole sequence is executed as one shell script, otherwise Make will spawn a new shell for each line. That means that anything you read
will disappear as soon as its shell exits.
I would also say that in general, prompting for interactive input from a Makefile is uncommon. You might be better off using a command line switch to indicate the web server root directory.