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?


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).

  • 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 ... Aug 4 '12 at 7:29
  • @RAJ...: Perhaps an example can help ln -s /etc/vim/vimrc /home/paf/Copy/Programming/Apps/Tools/Vim – pablofiumara Nov 11 '13 at 18:31
  • 4
    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 Nov 26 '15 at 23:41
  • 4
    @mishap is right as far as I'm concerned. It's the other way around. – Daniel Szmulewicz Dec 18 '15 at 17:05
  • 1
    @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 Mar 7 '18 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



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 Aug 8 '11 at 19:30
  • you can edit /etc/environment to modify PATH system wide. – Michał Šrajer Aug 8 '11 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
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
  • 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 Dec 12 '17 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
  • 2
    This is not an answer to the OPs question. Please wait until you have enough reputation to add comments. – derHugo Nov 9 '17 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.


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

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.