Linux commands: env
A quick guide to the `env` command, used to run commands and interact with environment variables
The env
command can be used to pass environment variables without setting them on the outer environment (the current shell).
Suppose you want to run a Node.js app and set the USER
variable to it.
You can run
env USER=flavio node app.js
and the USER
environment variable will be accessible from the Node.js app via the Node process.env
interface.
You can also run the command clearing all the environment variables already set, using the -i
option:
env -i node app.js
In this case you will get an error saying env: node: No such file or directory
because the node
command is not reachable, as the PATH
variable used by the shell to look up commands in the common paths is unset.
So you need to pass the full path to the node
program:
env -i /usr/local/bin/node app.js
Try with a simple app.js
file with this content:
console.log(process.env.NAME)
console.log(process.env.PATH)
You will see the output being
undefined
undefined
You can pass an env variable:
env -i NAME=flavio node app.js
and the output will be
flavio
undefined
Removing the -i
option will make PATH
available again inside the program:
The env
command can also be used to print out all the environment variables, if ran with no options:
env
it will return a list of the environment variables set, for example:
HOME=/Users/flavio
LOGNAME=flavio
PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin
PWD=/Users/flavio
SHELL=/usr/local/bin/fish
You can also make a variable inaccessible inside the program you run, using the -u
option, for example this code removes the HOME
variable from the command environment:
env -u HOME node app.js
The env
command works on Linux, macOS, WSL, and anywhere you have a UNIX environment
→ I wrote 17 books to help you become a better developer, download them all at $0 cost by joining my newsletter
→ JOIN MY CODING BOOTCAMP, an amazing cohort course that will be a huge step up in your coding career - covering React, Next.js - next edition February 2025