Figure 1: contents of a file named Makefile
.
For a smidgeon of educational content, note the use of $EUID
(effective user ID) rather than $UID
(real user ID). I consider it a design mistake that real user ID has a shorter name in most environments, despite effective user ID almost always being what you should use. See Wikipedia on user identifiers for a fair summary of the situation.
.PHONY: me a sandwich sandwich. ME A SANDWICH SANDWICH.
me a ME A:
@true
sandwich sandwich.:
@test $$EUID -ne 0 && echo "What? Make it yourself." || echo "Okay."
SANDWICH SANDWICH.:
@test $$EUID -ne 0 && echo "WHAT? MAKE IT YOURSELF." || echo "OKAY."
Figure 2: xkcd 149, Sandwich.
Note that although I made the Make targets support uppercase use, you’ll need something like alias MAKE=make
to be able to type MAKE
, and getting SUDO MAKE
going is a more complicated exercise left to the reader.
Hardly the first implementation, but as I say, I was hungry.