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

13,167

Solution 1

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?

Solution 2

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:

Solution 3

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”

Share:
13,167
moey
Author by

moey

Updated on June 19, 2022

Comments

  • moey
    moey almost 2 years

    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?
  • moey
    moey almost 11 years
    I saw several symlinks in /usr/local/bin/ but didn't find a symlink for watchr. Were you saying that /usr/bin/ is more for the system install; whereas /usr/local/bin/ is for a manual install i.e. programs that were installed manually by a user manually?
  • moey
    moey over 10 years
    After experimenting more on this, here's what I learned. As explained above {{/usr/local/bin/}} is used often by package manager e.g. brew installs {{/usr/local/Cellar/*}}. For manual install, it's really up to the user where to place the bits.
  • bid
    bid almost 7 years
    Thanks, man. I just ran into this when setting up Erlang and Elixir. Their official repository messed up in Ubuntu / Linux Mint. Your comment saved me from a possibly long bug-hunt and may do so in the future too. ;) I can't believe I didn't know that one before. (Any more keywords for future googlers I should add to my answer?)