How exactly to set up and use environment variables on a Mac?

Viewed 18908

What is the proper (2021 way) of creating a permanent environment variable on a Mac (macOS Big Sur) and then use it within a Java project.

There are many very old posts regarding this topic. None of them seem to work properly nowadays.

  1. How to add a permanent environment value (through terminal)?
  2. And how can I use it in a Java code?

I'm also not sure how I was able to add my testvar=testvalue to the list, because I tried so many files (although it seems none of them worked), by adding export testvar=testvalue to the following files:

  • /etc/paths
  • ~/.bashrc
  • ~/.bash_profile
  • ~/.profile
  • /etc/profile

Also after inserting it into each file I used source {file}.

So at this point I have no idea which is the proper way to create and have it permanently, and being able to use it in my Java code.

So far, I can print the variables into the terminal like this:

printenv

My variables are getting listed, example:

testvar=testvalue

In my Java code, I get null when using:

System.getenv("testvar")

However using an other variable names that were not created by me, but the macOS system (eg. "USER") prints the value as expected.

3 Answers

macOS Big Sur uses zsh as the default login shell and interactive shell.

If you’re using a Bash profile, such as to set environment variables, aliases, or path variables, you should switch to using a zsh equivalent.

For example:

  • .zprofile is equivalent to .bash_profile and runs at login, including over SSH
  • .zshrc is equivalent to .bashrc and runs for each new Terminal session

You can create .zprofile and enter the enter the environment variables there.


Reference

This depends on the shell which you are using. For Big Sur, the standard shell is zsh, which might explain why .bashrc and other bash-related configuration files did not work. If you want to set environment variables for your account in zsh, try to create a ~/.zshenv file and put the variable declarations there.

See also: http://zsh.sourceforge.net/Doc/Release/Files.html#Files

you can edit zprofile using the following command

sudo nano ~/.zprofile

and add your PATH variable.

# Setting PATH for Python 3.9
# The original version is saved in .zprofile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.9/bin:${PATH}"
export PATH

to add multiple values to the PATH variable, just add more PATH keys. For example, this is how I added multiple path variables in my M1 mac Monterey

# Setting PATH for Python 3.9
# The original version is saved in .zprofile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.9/bin:${PATH}"
PATH="/Users/<name>/.local/bin"
PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
export PATH
Related