I am installing p4v in /opt, but /usr/bin is on my path. Is it possible to create a soft or symbolic link for p4v from /opt to /usr/bin, so I can just type "p4v" since /usr/bin is in my path?


8 Answers 8


See man ln.

To create a symlink at /usr/bin/bar which references the original file /opt/foo, use:

ln -s /opt/foo /usr/bin/bar

You would need to apply the above command as root (i.e. with sudo).

  • 2
    I am using: sudo ln –s /etc/apache2/sites-available/redmine /etc/apache2/sites-enabled/000-redmine getting error: ln: target '/etc/apache2/sites-enabled/000-redmine' is not a directory
    – RAJ ...
    Commented Aug 4, 2012 at 7:29
  • 1
    The Ubuntu documentation says " Creates hard links by default, symbolic links with --symbolic." Will the above solution create a symbolic link as asked by OP?
    – dev
    Commented May 26, 2015 at 5:27
  • 5
    I though César wanted to put his files in the /opt and /usr/bin to have the symbolic link, not other way around.
    – mishap
    Commented Nov 26, 2015 at 23:41
  • 5
    @mishap is right as far as I'm concerned. It's the other way around. Commented Dec 18, 2015 at 17:05
  • 2
    @kevinmicke after your explanation finally realized that the explanation of the answer was stated in reverse order from the command, making my brain (and others') read it backwards
    – Andrew
    Commented Mar 7, 2018 at 21:00

The error is that you are writing the command wrong. The correct way is

ln -s /<full>/<path>/<to>/<file> /usr/local/bin


  • Note the leading foreslash /
    – mace
    Commented Mar 5, 2019 at 7:50
  • Thanks, I totally missed that I needed the absolute path to the linked file.
    – Andy R
    Commented Jun 14, 2019 at 8:58

If the 'p4v' executable is at /opt/bin/p4v, you can simply run:

sudo ln -s /opt/bin/p4v /usr/bin/p4v
sudo chmod ugo+x /usr/bin/p4v

It would be better to add /opt/bin (or wherever the executable is) to your path:

echo "export PATH=\$PATH:/opt/bin" >> ~/.profile
  • ~/.profile would be better for setting $PATH.
    – Lekensteyn
    Commented Aug 8, 2011 at 19:30
  • you can edit /etc/environment to modify PATH system wide. Commented Aug 8, 2011 at 19:44

Check the software location by this.

which application-name #replace for the application you are looking for

for example

which skype

output will be this.


To create the soft link. for example you want to create the soft link for skype on your desktop

ln -s /usr/bin/skype ~/Desktop/

For more information about ln.

man ln


ln --help

This template was more helpful for me than the above answers. Probably not more correct, just less obfuscated:

ln -s <path/to/real/file-or-folder> <symlink path>

Just replace the parts in <>'s

ln -s -n ./TargetDirectory ./Nickname

Note, this works if you both nodes are below you in the same tree. You can use relative notation

  • -s command makes it a symbolic link
  • -n makes it possible de create a folder-type symlink
  • 1
    Welcome to askubuntu.com. In this case the $ to indicate a command line prompt is a style choice, and not likely to be a problem. However bear in mind that including things in a code block other than the code and its output can cause confusion.
    – J. Starnes
    Commented Dec 12, 2017 at 0:42

If it is saying target is not a folder, it means there are spaces in your folder names eg: New Folder has a space

You need to edit the path and add a backslash \ after every space in the paths


ln -s /opt/bin /usr/var/New\ Folder
  • 3
    This is not an answer to the OPs question. Please wait until you have enough reputation to add comments.
    – derHugo
    Commented Nov 9, 2017 at 5:59

I have found that it is easier to go to where you want the link to be and then create the link using sudo ln -s /path/to/source/file, than doing ln -s target source.

So in your case I would do cd /usr/bin then sudo ln -s /opt/bin/pv4. The other way has not been working in my case.

You must log in to answer this question.

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