How to Pass Environment Variables to Makefiles in Subdirectories
We all know how to access environment variables inside our
Suppose this is our project structure.
📂 project ┣ 📜 Makefile ┣ 📜 .env ┗ 📂 client ┣ 📜 Dockerfile ┗ 📜 Makefile
/Makefile, suppose we trigger a
make command in the
# /Makefile build-client: cd client && $(MAKE) build
# /client/Makefile build: docker build -t client .
But let’s say
/client/Makefile needs access to some environment variables inside
# .env HOSTNAME=localhost PORT=3000
How can we pass the environment variables into the nested
In this scenario, we will need to
export the variable in the same command as
From the GNU documentation:
makecome from the environment in which
makeis run. Every environment variable that
makesees when it starts up is transformed into a
makevariable with the same name and value.
# /Makefile include .env build-client: export URI=$(HOSTNAME):$(PORT) && \ cd client && $(MAKE) build
\ will allow for a multi-line shell command.
URI variable exists in the environment of the
# /client/Makefile build: docker build -t client --build-arg URI=$(URI) .
More CLI Articles
- How to Fix "xcrun error invalid active developer path" with Git on macOS
- How to Update Node to Another Version on Windows WSL
- How to Use SSH with GitHub (Instead of HTTPS) on Windows WSL
- How to Delete Files with a Specific Extension in all Subdirectories Recursively
- How to Suppress Output of npm install
- How to Access Environment Variables in a Makefile
- How to Reset Password on Ubuntu Linux
- How to Pull a Branch from Another User's Fork using Git
- How to Align GitHub README images in Markdown
- How to Merge Development and Production Branches in Git
- How to Quickly Push to Git with a Bash Script
- How to Change Author of Commit in Git History
- WSL2: How to Fix "Virtual hard disk files must be uncompressed and unencrypted and must not be sparse"
- How to Replace a Branch with Another Branch in Git
- How to Delete a Git Branch Locally and Remotely
- How to Schedule Recurring Deploys in Netlify
- How to View All Global Packages in npm
- How to Test an npm package locally
- How to Update an npm Package (Fixing "You cannot publish over the previously published versions")
- How to Undo Changes in a Single File in Git
- How to Fix the Netlify error: "Treating warnings as errors because process.env.CI = true"
- How to Set the Default Directory for Git Bash on Windows
- How to Search Past Terminal Commands in Linux
- How to Get the Count of Files with each File Extension in Linux
- How to Find All Files with a Specific File Extension in Linux
- How to Run Multiple Commands Simultaneously in Linux
- How to Watch a File in Linux using tail
- Linux Timestamps: The Difference Between atime, mtime, ctime, and crtime
- How To Remove Duplicate Lines While Maintaining Order in Linux
- How To Count the Number of Non-Empty Output Lines in Linux
- How To Find All IP Addresses within a File in Linux with grep
- How To Rename Every File in all Subdirectories in Windows CMD