Getting and Setting Environment Variables

Exporting just Variables

Assignments prefixed with the export keyword will be exported to recipes as environment variables:

export RUST_BACKTRACE := "1"

  # will print a stack trace if it crashes
  cargo test

Parameters prefixed with a $ will be exported as environment variables:

  # will print a stack trace if it crashes
  cargo test

Exported variables and parameters are not exported to backticks in the same scope.

export WORLD := "world"
# This backtick will fail with "WORLD: unbound variable"
BAR := `echo hello $WORLD`
# Running `just a foo` will fail with "A: unbound variable"
a $A $B=`echo $A`:
  echo $A $B

When export is set, all just variables are exported as environment variables.

Getting Environment Variables from the environment

Environment variables from the environment are passed automatically to the recipes.

  echo "HOME is: '${HOME}'"
$ just
HOME is '/home/myuser'

Loading Environment Variables from a .env File

just will load environment variables from a .env file if dotenv-load is set. The variables in the file will be available as environment variables to the recipes. See dotenv-integration for more information.

Setting just Variables from Environment Variables

Environment variables can be propagated to just variables using the functions env_var() and env_var_or_default(). See environment-variables.