Path, /usr/bin/ and /usr/local/bin/

15.2k Views Asked by At

I installed watchr on OS X (10.8.3) using gem install watchr. And it's installed in /usr/bin/watchr

$ which watchr
/usr/bin/watchr

However, when I tried to call it $ watchr -v, the system couldn't find it.

$ watchr -v
-bash: /usr/local/bin/watchr: No such file or directory

I think this is related to how the path is set up on my machine. My questions:

  1. What is the right way to fix it?
  2. In general, what programs should go to /usr/bin/ vs. /usr/local/bin/?
  3. When I do e.g. $ /usr/bin/watchr -e 'watch(./hello.txt) ...', are we looking at the hello.txt in the current directory or in /usr/bin/ i.e. the same directory as watchr?
3

There are 3 best solutions below

2
Lri On

Is /usr/local/bin/watchr a broken symlink? That would make which watchr not include it but watchr would print this error:

-bash: /usr/local/bin/watchr: No such file or directory

I don't know why the gem that comes with OS X installs programs in /usr/bin/, but generally /usr/bin/ is meant for preinstalled programs, and package managers use something like /opt/local/bin/ or /usr/local/bin/.

I also have /usr/local/bin/ before other folders on the path, and I put most programs that I install or compile manually to /usr/local/bin/. I used to have a separate ~/bin/ folder, but it's easy to find non-Homebrew programs with something like find /usr/local/bin ! -lname '../Cellar/*'.

Related questions about /usr/local/bin/ in general:

1
Alex Mooney On

The path to your command was cached with a bad value. Try to update the cached directory that bash has stored for the path.

hash -d watchr

I found the answer over here which ctags shows /usr/local/bin/ctags but when I run ctags it runs /usr/bin/ctags. How is this possible?

0
John Barraco On

create a file called .profile in your home directory and add the following line.

export PATH=“/usr/local/bin:/usr/local/sbin:/usr/bin:$PATH”