79

I recently uninstalled Xcode 4.2 and re-installed Xcode 4.3.1. Command Line Tools are installed. I then installed MacPort using “dmg” disk images for Lion from macports.org. Since, I was getting sudo: port: command not found after every use of port, I followed this and this post to create a .bash_profile file(wasn't present earlier) and then put in it the following but to no avail.

export PATH=$PATH:/opt/local/bin
export MANPATH=$MANPATH:/opt/local/share/man
export INFOPATH=$INFOPATH:/opt/local/share/info 

Following this post

➜  ~ git:(master) ✗ rvm install 1.8.7 --with-openssl-dir=/opt/local
You requested building with '/usr/bin/gcc-4.2' but it is not in your path.
➜  ~ git:(master) ✗ vi .rvmrc 

rvm_archflags="-arch x86_64"

export CC="/usr/bin/gcc-4.2"

export CFLAGS="-O2 -arch x86_64"
export LDFLAGS="-L/opt/local/lib"
export CPPFLAGS="-I/opt/local/include"

Renaming .bash_profile to .profile

➜  ~ git:(master) ✗ vi .bash_profile
➜  ~ git:(master) ✗ mv .bash_profile .profile
➜  ~ git:(master) ✗ mv .profile              
usage: mv [-f | -i | -n] [-v] source target
       mv [-f | -i | -n] [-v] source ... directory
➜  ~ git:(master) ✗ mv -f .bash_profile .profile
mv: rename .bash_profile to .profile: No such file or directory
➜  ~ git:(master) ✗ port
zsh: correct 'port' to 'pr' [nyae]? n
zsh: command not found: port
➜  ~ git:(master) ✗ which port
port not found
➜  ~ git:(master) ✗ 

.profile content:

export PATH=$PATH:/opt/local/bin
export MANPATH=$MANPATH:/opt/local/share/man
export INFOPATH=$INFOPATH:/opt/local/share/info
Community
  • 1
  • 1
Ava
  • 5,783
  • 27
  • 58
  • 86
  • 1
    I ran into this error in the command line when installing MongoDB for a Rails app, so I imagine some others may also find this question via Google search with the same keywords. All I did was update XCode and install MacPorts from macports.org, try that before doing anything else on this page. – JGallardo Aug 20 '13 at 17:54

11 Answers11

146

First, you might need to edit your system's PATH

sudo vi /etc/paths

Add 2 following lines:

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

Reboot your terminal

ndmeiri
  • 4,979
  • 12
  • 37
  • 45
Isis
  • 4,608
  • 12
  • 39
  • 61
  • 7
    After lots of .bash_profile investigation, it turned out I just needed to reboot the terminal after installing MacPorts. Thanks for this tip. – Ila Jan 21 '14 at 21:31
  • It works for me too! Thank you. This should be the right answer. – Felipe Mar 20 '14 at 09:31
  • @Ila just rebooting terminal worked for me. Thank you for help :) – NightFury May 22 '14 at 08:53
  • Kindly help me:Bounty: http://stackoverflow.com/questions/39287906/error-while-installing-firebase-via-cocoapods – Bista Sep 06 '16 at 06:49
  • Adding those two lines and rebooting the terminal was what finally did the trick after messing around with .bash_profile and .profile. All of it fruitless until I added opt/local/bin to etc/paths. – pimmen Aug 25 '17 at 19:42
  • You can also add this line to `/etc/manpaths`: `/opt/local/share/man` – GDP2 Apr 24 '18 at 16:48
  • For the record, this worked to solve the same problem on High Sierra as well. – Dana Scheider Jul 08 '18 at 00:15
  • This is the real solution, @Ava please tag the correct answer. – Fabio William Conceição Aug 15 '19 at 10:50
  • It might be a good solution for some cases, but if you do not have sudo access and installed mactools as such, I am afraid another solution would be necessary. – demongolem Dec 05 '19 at 16:28
23

Make sure to delete ~/.bash_profile and ~/.bash_login so that .profile can work. This worked for me http://johnnywey.wordpress.com/2008/04/17/fixing-bash-profile-in-os-x/

John Barraco
  • 390
  • 1
  • 6
  • 15
    I restarted my terminal and it's gone again :-/ – Ava Mar 26 '12 at 01:51
  • what's gone, your .profile? BTW can you still use sudo in the terminal? like sudo ls for example? – John Barraco Mar 26 '12 at 02:41
  • port. I have to run `source .profile` every time when I open terminal for it to recognize port. – Ava Mar 26 '12 at 02:44
  • sounds like you still have .bash_profile or .bash_login http://superuser.com/questions/366642/profile-not-loaded-osx-lion – John Barraco Mar 26 '12 at 05:11
  • The link to the solution is not available anymore. – T04435 Dec 20 '18 at 13:51
  • Link to the solution is not available any more. This is why the solution should be posted here and not just the link. – nisevi Apr 15 '19 at 02:22
  • 2
    Why would you want to delete your `~/.bash_profile` or `~/.bash_*` for that matter, ever? Especially if you spent a lot of time configuring your bash, all of that configuration will be gone instantly and many tools that you use daily will be gone. – milosmns May 25 '19 at 17:28
  • This is far to be a solution, first of all, you'll gonna delete all your personal profile bash data, and this is not mean it'll gonna work because the problem is related to paths of the system, the correct solution is provided by @Isis. – Fabio William Conceição Aug 15 '19 at 10:52
  • johnnywey.wordpress.com is no longer available. – Anhdevit Dec 28 '20 at 02:26
21

I found the answer in the official website

$ vi ~/.profile

# add the following line
export PATH=/opt/local/bin:/opt/local/sbin:$PATH

And now restart the terminal or type source !$ (equivalent to source ~/.profile)

Nuno Costa
  • 1,210
  • 11
  • 12
18

if you use zsh.please add flowing string to the line 'export PATH="..."' in file '~/.zshrc'

:/opt/local/bin:/opt/local/sbin
Michael
  • 181
  • 2
  • 4
  • 1
    You can also set `MANPATH` with `export MANPATH="/opt/local/share/man"`. If you want to be able to access MacPorts in non-login shells, set these variables in `~/.zshenv`. – GDP2 Apr 19 '18 at 23:53
  • Thanks a lot. I was editing .profile, .bash_profile till now. Finally edited .zshrc and it worked. – Vivek Mangal Mar 30 '22 at 15:05
18

You could try to source your profile file to update your environment:

$ source ~/.profile
istruble
  • 13,363
  • 2
  • 47
  • 52
Awalias
  • 2,027
  • 6
  • 31
  • 51
8

On my machine, port is in /opt/local/bin/port - try typing that into a terminal on its own.

James Holwell
  • 938
  • 7
  • 10
6

If you have just installed macports just run and it should work

source ~/.bash_profile
Ayoub
  • 540
  • 5
  • 11
1

You can quite simply add the line:

source ~/.profile

To the bottom of your shell rc file - if you are using bash then it would be your ~/.bash_profile if you are using zsh it would be your ~/.zshrc

Then open a new Terminal window and type ports -v you should see output that looks like the following:

~ [ port -v                                                                                                              ] 12:12 pm
MacPorts 2.1.3
Entering interactive mode... ("help" for help, "quit" to quit)
[Users/sh] > quit
Goodbye

Hope that helps.

shabbirh
  • 675
  • 1
  • 5
  • 13
1

What do you get from running which port as your regular user account? Try it from a freshly opened terminal. Try again after renaming .bash_profile to .profile. Can you run port as a regular user, even with no arguments?

Matt K
  • 13,370
  • 2
  • 32
  • 51
0

there might be the situation your machine is managed by Puppet or so. Then changing root .profile or .bash_rc file does not work at all. Therefore you could add the following to your .profile file. After that you can use "mydo" instead of "sudo". It works perfectly for me.

function mydo() {
    echo Executing sudo with: "$1" "${@:2}"
    sudo $(which $1) "${@:2}"
}

Visit my page: http://www.danielkoitzsch.de/blog/2016/03/16/sudo-returns-xyz-command-not-found/

0

I faced this as an issue with port trees. MacPorts offers a solution here, which worked for me and does not imply changing your environment variables.

Julio
  • 119
  • 1
  • 9