Makefile Cheat Sheet/One shell per recipe

Run all lines of a recipe in a single shell instance.

Section: Special targets and behavior control

One shell per recipe

makefile
makefile
.ONESHELL:

deploy:
	set -eu
	cd infra
	terraform apply -auto-approve
Explanation

Without `.ONESHELL`, each recipe line runs in a separate shell.

Learn the surrounding workflow

Compare similar commands or jump into common fixes when this command is part of a bigger troubleshooting path.

Related commands

Same sheet · prioritizing Special targets and behavior control
Declare multiple phony targets
Mark non-file targets explicitly.
OpenIn sheetmakefilesame section
Silent recipes
Suppress command echoing globally or per line.
OpenIn sheetmakefilesame section
Delete target on error
Remove a partially built target if the recipe fails.
OpenIn sheetmakefilesame section
Secondary expansion
Allow a second variable expansion for prerequisites.
OpenIn sheetmakefilesame section
Disable parallelism
Force serial execution for all or selected targets.
OpenIn sheetmakefilesame section
Set explicit default goal
Choose which target runs when the user invokes plain `make`.
OpenIn sheetmakefile1 tag match