I created a symbolic link (yesterday) like this:

sudo ln -s bin/python /usr/bin/prj-python

When I run:

prj-python file.py

I get:

prj-python: command not found

When I try creating the link again, I get:

ln: creating symbolic link `/usr/bin/prj-python': File exists

Why is that happening? My $PATH is:


2 Answers 2


Things to check:

  • Perform an ls -l /usr/bin/prj-python

If it's like:

lrwxrwxrwx (...) /usr/bin/prj-python -> bin/python

The file will actually be searched at /usr/bin/bin/python (that's what xralf tried to say). Fix:

rm /usr/bin/prj-python
ln -s /full/path/to/your/python /usr/bin/python-prj

  • If your bin/python is a shell script (aka. wrapper-script) check the #!-line (sometimes called shebang-line) at the first line. If there's a typo like #!/bin/bush that will cause a not found error message also.
  • 1
    thank you, your answer is even more careful and educational. Sorry I already accepted.
    – xralf
    Oct 17, 2011 at 9:52
  • this helped a lot...most of the answers if found were about $PATH
    – Ja8zyjits
    Jan 16, 2016 at 16:15
  • I use an ln without a parameter . People should use ln -s indeed, thus creating a symbolic link.
    – Cedric
    Sep 14, 2017 at 8:43
  • 3
    Helped, and I used ln -s $PWD/python /usr/bin/python-prj. $PWD is used for getting full path.
    – Manwal
    Jan 10, 2019 at 7:19

You forgot the initial slash before bin/python. This means /usr/bin/prj-python now points to /usr/bin/bin/python. What would you like it to point to exactly?

  • 1
    There is not initial slash. the pwd is /home/xralf/my_virtual_env and it has subdirectory bin with python command
    – xralf
    Oct 16, 2011 at 18:44
  • 12
    Than, you've forgot $PWD/ before bin.
    – rvs
    Oct 16, 2011 at 20:38
  • Thank you, this helped. I used this command as it was in the book.
    – xralf
    Oct 17, 2011 at 9:50

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .