I'm really new to Mac OSX and UNIX based systems. I wanted to run a few Windows games on my Mac Mini so I started installing Wine and MacPorts.

Having done so, I typed in sudo port install wine and the terminal returned a not found error. I tried other basic commands like say and clear and all of them return the not found error. I've googled this and all I've understood so far is that the PATH might be incorrectly set. So I ran this command: echo $PATH and it returned this:

/opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/opt/local/bin

Can anyone tell me how to set this path correctly? I'm a complete newbie to mac and have no idea where .bash_profile or any of those files are. If it helps, I've also installed Xcode and the Command Line tools for Xcode. I'm running Mountain Lion.

  • 3
    Unfortunately I think you need a tutorial on Unix as although we can answer the question we probably cannot provide enough background to help you understand it. As for Wine - easiest is try Crossover(costs) or Wineskin(free) which do not require terminal use – Mark Feb 22 '13 at 11:27
up vote 11 down vote accepted

$PATH should contain these folders: /usr/bin:/usr/sbin:/bin:/sbin.

Try editing ~/.bash_profile, ~/.profile, or ~/.bash_login (with for example /usr/bin/open ~/.bash_profile -a TextEdit) and commenting out any lines that modify the path.

If that works, you can add a line like export PATH=/opt/local/bin:/opt/local/sbin:$PATH to ~/.bash_profile.

  • I tried export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin and it works but once I close and reopen the terminal, it goes back to the same error again. I'm a complete noob and I have no idea where ~/.bash_profile or any of those files are located. I'm assuming they're hidden? – Jack Copeland Feb 22 '13 at 8:33
  • ~/ is the home folder (/Users/username/). Files starting with a period are hidden, but you can show them with for example ls -la. – user495470 Feb 22 '13 at 9:49

Similar problem was happening to me, so what I did was:

1) typing export PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" into the terminal in order to make it temporarily working

2) Editing bash_profile by typing /usr/bin/open ~/.bash_profile -a TextEdit

3) When I opened my bash_profile file I realised the last line export looked really messy with some strange symbols, so I changed it entirely to export PATH=/opt/local/bin:/opt/local/sbin:$PATH

I'm an absolutely beginner at this but I managed to get those steps by reading pieces of solutions from different questions on SE, so hope it could help someone else.

It sounds like you overwrote you path rather then just adding to it.

Make sure when you set your PATH you include "${PATH}" to include your existing path as well

By default the $PATH is set in a couple of files. Technically you should add to your $PATH in the .bash_profile file in you home directory.

One suggestion if to check if certain folder exist before you add them to your PATH.

For example I have:

if [ -d /usr/local/bin ] ; then
    PATH=/usr/local/bin:"${PATH}"
fi

if [ -d /usr/local/mysql/bin ] ; then
    PATH=/usr/local/mysql/bin:"${PATH}"
fi

if [ -d /opt/local/bin ] ; then
    PATH=/opt/local/bin:"${PATH}"
fi

if [ -d /opt/local/sbin ] ; then
    PATH=/opt/local/sbin:"${PATH}"
fi

if [ -d ~/bin ] ; then
    PATH=~/bin:"${PATH}"
fi

( The -d directory command check to see if the directory exists )

In addition to the fix it answers, I'd also like to call out one thing to test.

If your current window simply has a bad PATH variable and your system isn't more broken, you can fix the path easily:

echo $PATH
/usr/libexec/path_helper

Compare the output of the two above commands. If you want to return to a "safe" path, just copy and paste the line that the path_helper provides into that terminal. On an unmodified Mac 10.11 system, you should have this output from the helper tool:

PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"; export PATH;

If your path needs to be customized, then look to the excellent answers also on this question.

  • 1
    Or you could issue PATH=$(/usr/bin/getconf PATH) to get a usable PATH in the current shell. /usr/local does not exist on an unmodified system. – fd0 Oct 1 '15 at 17:05
  • Excellent @fdo - I'm not aware of what might mess up getconf so that might be just as good as just hard coding things. It's also shorter than my "brute force" fix. – bmike Oct 19 '15 at 15:42
  • path_helper constructs the PATH from the current PATH, the /etc/paths file, and any files within /etc/paths.d. It can also be influenced by any PATH settings in /etc/launchd.conf. getconf prints the system PATH hard coded in the kernel- sysctl user.cs_path. – fd0 Oct 20 '15 at 15:48

Your terminal's ./bash_profile may have been overwritten.

Use export PATH=/usr/bin:/bin:/usr/sbin:/sbin/usr/local/bin in the terminal to temporarily rewrite the current PATH settings. This should give you access to sudo and nano which you will then use nano .bash_profile. For me, deleting everything in the file worked.

For me I got into this exact issue when I attempted to add a new directory to PATH using an incorrect export command in my ~/.bash_profile. Both examples below.

export PATH=/some/new/path:PATH (incorrect, note missing $)

vs

export PATH=/some/new/path:$PATH (correct)

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.