setting path in terminal

11,244

Solution 1

To solve both issues: Edit your ~/.bash_profile file

The /usr/bin occurs before /usr/local/bin warning:

This warning is telling you that the $PATH environment variable is listing /usr/bin as higher priority than /usr/local/bin, which I presume is the default location that home brew installs packages to.

If you ignore this, then this means that if you install or upgrade a program using 'home brew' after already having that program previously installed (without using 'home brew') to different location, the shell might invoke commands using the older copy and not the newer 'home brew'-installed version.

The $PATH variable is perhaps the most important of Unix Shell environment variables (you can type env to list the environment variables in the shell) in that it defines the order of directories in which the computer will search when looking for programs to execute. The highest priority path names are specified first.

You can view the contents of your ~/.bash_profile by typing in Terminal.app:

$ cat ~/.bash_profile

Remember: don't type the $, it just indicates the Terminal prompt.

It should print out something like this:

# Setting PATH for EPD_free-7.3-2
# The original version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/Current/bin:${PATH}"
export PATH

Note that Enthought's comment indicates that they preserved the original ~/.bash_profile in a copy called .bash_profile.pysave in the same directory ($HOME). If you want you can view that file, check it out with cat or a text editor. If you decide to revert back to it, you can do so by removing the ~/.bash_profile file and by renaming .bash_profile.pysave to .bash_profile. (This wasn't an option for me, as I must have in the past installed Enthought's distribution a second time (possibly on top of itself), so my .bash_profile.pysave still contained Enthought's configurations, and my ~/.bash_profile. listed two copies of the Enthought configurations.)

This is the Enthought distribution setting the $PATH env variable to ${PATH}. To show what the ${PATH} variable holds, lets enter echo $PATH into the shell. It should show that Enthought's own directories have first priority (because they come first):

$ echo $PATH
/Library/Frameworks/Python.framework/Versions/Current/bin:/Library/Frameworks/Python.framework/Versions/Current/bin:/usr/local/bin:/usr/local/sbin:~/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/texbin

If you look closely at the above example, you can see that /usr/local/bin occurs twice in the list (!), once in third position and once in the second to last position. /usr/bin occurs between them, but the parser for brew doctor is detecting a problem (this could be a brew doctor bug that is only checking for a trailing /usr/local/bin, but there is almost certainly an Enthought bug because they left my $PATH definition with two /usr/local/bin's in there. If you don't see /usr/local/bin/ twice, then it could be because I may have had installed Enthought twice on my end.).

So, even though there may not really be a problem here, brew doctor still thinks so and we also still need to get rid of Enthought's directories placed with highest priority, because those entries could interfere if we wanted to acquire a different Python distribution in the future using 'home brew'.

The shell will look to these locations in the $PATH variable from left to right order for executing commands, etc. Remember, the paths are separated by colons (:) and are listed in descending priority from left to right, with highest priority first.

Method 1 - ("Fast and Easy" version):

A) Redefine the $PATH variable, paste this command in Terminal:

$ echo 'export PATH="/usr/local/bin:/usr/local/sbin:~/bin:$PATH"' >> ~/.bash_profile

(This will append (the >> operator) the echoed string to the end of the ~/.bash_profile file. If you use this command, you will still need to edit your ~/.bash_profile to remove the Enthought stuff later)

Click here and scroll down to step 3 for more info on this particular command.

Or you can cd into the $HOME directory and add the string in the above command to the your .bash_profile manually, as I show below for removing Enthought's configurations.

B) To disable the Enthought Python distribution, edit your ~/.bash_profile file:

Change to your home directory:

$ cd $HOME

To edit the file in, for instance, TextEdit:

$ open -a "TextEdit" .bash_profile

Find these two lines:

PATH="/Library/Frameworks/Python.framework/Versions/Current/bin:${PATH}"
export PATH

And comment them out by placing an # in front of each line. Then save the file.

(If you plan on not using the Enthought distribution again, you can delete these lines and the other comments instead of commenting them out)

Method 2 - Edit the file (and solve both problems) using a text editor

(Below explanation assumes unfamiliarity with the vim editor)

$ vim ~/.bash_profile

If you do not have write privileges you may be prevented from changing the ~/.bash_profile file. If so, exit vim (ESC, then type :q) and change to super user by prepending the above vim command with sudo and a space. You can exit sudo ('super user do') later by typing exit once back in the shell.

When vim first opens up, you are presented with the command mode, where typing will not change the file contents at all, but add commands to the prompt at the bottom of the window (such as :q to quit, or :w to write (save) changes).

In vim, you can move around with the arrow keys (or the H, J, K, L keys). Once you've located the line to edit, press the I key to enter -INSERT- mode and start inserting characters before the cursor (Pressing the A key in command mode will also exit command mode but will start inserting text after the cursor).

If you think you might want to use the Enthought distribution in the future, you can comment out all the lines by placing a # at the beginning of each line, like so:

# Setting PATH for EPD_free-7.3-2
# The original version is saved in .bash_profile.pysave
# PATH="/Library/Frameworks/Python.framework/Versions/Current/bin:${PATH}"
# export PATH
# export PATH="/usr/local/bin:/usr/local/sbin:~/bin:$PATH"

If you have no plans to use the Enthought distribution or you have already uninstalled it, just delete all of the above lines from the ~/.bash_profile file.

To declare a new definition for the $PATH environment variable, add this line below:

export PATH="/usr/local/bin:/usr/local/sbin:~/bin:$PATH"

Once you are done editing the file, press ESC to leave -INSERT- mode and return to command mode. then type :wq to write the changes and quit the vim editor. You will then be returned to the shell.

To finish, source the newly saved ~/.bash_profile by entering:

$ source .bash_profile

If you only commented out the Enthought lines, you'll be able to return to your .bash_profile and enable the Enthought distribution again by uncommenting those two lines.

Now run brew doctor and you should be good to go. If it doesn't run without warnings, kill Terminal and reopen it and try again.

Running echo $PATH should now show:

/usr/local/bin:/usr/local/sbin:~/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/texbin

Solution 2

Unless you need it for something, I'd remove Enthought's version of Python.

Share:
11,244
Admin
Author by

Admin

Updated on June 04, 2022

Comments

  • Admin
    Admin almost 2 years

    I am installing Homebrew on my Mac in order to install Macvim. After installing Homebrew, I am prompted to run brew doctor, which in turn generates a number of warnings. I have resolved several of these but am stuck on two:

    Warning: Enthought Python was found in your PATH. This can cause build problems, as this software installs its own copies of iconv and libxml2 into directories that are picked up by other build systems.

    I'm not sure if I should simply ignore this or look for a way to uninstall Enthought Python.

    Warning: /usr/bin occurs before /usr/local/bin This means that system-provided programs will be used instead of those provided by Homebrew. The following tools exist at both paths:

    git
    git-cvsserver
    git-receive-pack
    git-shell
    git-upload-archive
    git-upload-pack
    

    Consider setting your PATH so that /usr/local/bin occurs before /usr/bin. Here is a one-liner: echo export PATH="/usr/local/bin:$PATH" >> ~/.bash_profile

    I have run

    echo export PATH="/usr/local/bin:$PATH" >> ~/.bash_profile

    several times but continue to get the same warning. Here is my PATH

    nngrey$ echo $PATH
    /Users/nngrey/.rvm/gems/ruby-2.0.0-p247@railstutorial_rails_4_0/bin:/Users/nngrey/.rvm/gems/ruby-2.0.0-p247@global/bin:/Users/nngrey/.rvm/rubies/ruby-2.0.0-p247/bin:/Users/nngrey/.rvm/bin:/Library/Frameworks/Python.framework/Versions/Current/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/Users/nngrey/bin
    

    Okay, I found the answer to my second question here: How to modify PATH for Homebrew?

    I just needed to restart the terminal. Still not sure what to do about Python, though.

    Any suggestions would be appreciated. Thanks