I want to add a path to the PATH environment variable?

I have tried with export PATH=/mypath:$PATH and it works. But the next time I start the Terminal, my new path is not int the PATH environment variable any more.

How can I add a path to the PATHenvironment variable? and it should be there also the next time I start the Terminal.

I have problems with this now again, the trick that worked before doesn't seem to work anymore.

I have tried with:

echo 'export GRADLE_HOME=/Users/jonas/gradle-1.2/' >> ~/.profile
echo 'export PATH=GRADLE_HOME/bin:$PATH' >> ~/.profile

to add two environment variables. Then my ~/.profile-file has this content:

export GRADLE_HOME=/Users/jonas/gradle-1.2/

But when I start a new Terminal window and type gradle (the command I added to PATH), I get a message that the command doesn't exists. If I run the command from /Users/jonas/gradle-1.2/bin it works fine!


echo 'export PATH=/my/path:$PATH' >> ~/.bash_profile should do the trick!

If you used echo 'export PATH=/my/path:$PATH' > ~/.bash_profile, or any such variation, you would be overwriting the contents of your profile!


OSX reads the following files in order when a terminal opens :


So place your path addition into one of these. I normally put additions into ~/.bash_profile

  • 2
    Thanks, I used echo 'export PATH=/mypath:$PATH' >> ~/.profile – Jonas Apr 22 '11 at 8:36

In addition to the places mentioned by  @RobZolkos, the login shell also looks in /etc/paths and the files inside /etc/paths.d/. One path entry per line in these files.

See /etc/profile and the manual page for path_helper.

  • Ok, thanks! but the biggest problem was how to add the path. But I found echo 'export PATH=/mypath:$PATH' >> ~/.profile – Jonas Apr 22 '11 at 10:52
  • @Jonas: I realized that your problem was solved. My answer was intended for the benefit of future readers, so they can see all the options available to them. – Harald Hanche-Olsen Apr 22 '11 at 10:56

Old question but, for MacOS X Catalina users:

Create/edit ~/.zshenv:

# comment for yourself

Notice that modify PATH in ~/.zprofile or ~/.zshrc is not correct, it should be ~/.zshenv.

If you need to prepend something to PATH, further create/edit ~/.zprofile:

# apply the prepend to PATH
[[ -r ~/.zshenv ]] && source ~/.zshenv
# remove duplicate in PATH
typeset -U PATH

Reference: http://zsh.sourceforge.net/Intro/intro_3.html

  • What do you mean with "If you need to prepend to the PATH" and why can't this be done in .zshenv as well? – nohillside Apr 17 '20 at 6:49
  • @nohillside: Sorry for my bad grammar, but good question. If you try to prepend something to the PATH in ~/.zshenv by PATH="to/your/path:$PATH", without the lines in ~/.zprofile, it won't work. Something call path_helper will move those /usr/local/bin/:/usr/bin:... to the front of PATH. – Raining Apr 17 '20 at 8:29
  • In short it's a matter of loading order. path_helper will be executed after ~/.zshenv but before ~/.zproflie. And from my study today I would recommend using symlink instead of modify PATH, which is much simpler. – Raining Apr 17 '20 at 8:37

Insert in .bashrc these lines of code:

function pathadd {              # Add new element to PATH
  if ! echo $PATH | egrep -q "(:|^)$1(:|$)"
  then if [ "$2" = "after" ]
       then PATH="$PATH:$1"
       else PATH="$1:$PATH"

then type a command like: pathadd /opt/local/bin or pathadd /opt/local/bin after.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .