12

I have a load of tools that are kept in the /opt directory. The tools are organised like this: /opt/toolname/tool.sh. My question is, how can I add the tools in my /opt folder to my path, so i can run them from any directory in a terminal.

I have managed to do this with some tools by creating a symlinks in /usr/bin; but with over 200 tools it is a very tedious way of doing things. is there a better way to do this?

1
  • 1
    Sorry, $PATH isn't recursive -- and IMO, shouldn't be, so you may be out of luck. Best advice I can add would be to write a tool that keeps your symlinks in order.
    – Shadur
    Feb 6, 2015 at 11:58

3 Answers 3

17

The only correct way, is to make links in /usr/bin or /usr/local/bin as you described. Because in those folders in /opt/toolname there are normally many other files, not just executables. I would be grubby. Anyway, adding /opt/*/ to the $PATH variable would not work.

If you have a list of the full paths to those binaries, you could generate the links scriptually.

2
  • 9
    Just /usr/local/bin. /usr/bin is managed by package managers and it's not idea to put out-of-package links there.
    – orion
    Feb 6, 2015 at 12:02
  • Yes, politically correct it would only be /usr/local/bin ^^
    – chaos
    Feb 6, 2015 at 12:02
7

There are many ways to do it:

  1. Make a symlink in /usr/bin (or /usr/local/bin) directory sudo cp -s /opt/toolname/tool.sh /usr/bin/[unique_Toolname]
  2. Add /opt/toolname/tool.sh to $PATH variable export $PATH=$PATH:/opt/toolname/
  3. Combine the above but use $HOME/.local/share/bin instead system /usr/bin
1
  • 1
    Should it be export PATH=$PATH:/opt/toolname/ right? Without the "$" in the first PATH. Oct 13, 2021 at 7:13
4

You can add the folders to your path using the following command:

export PATH=/path/to/folder:$PATH

You should include this in a shell script that will be run before you open a terminal window (such as .bash_profile in your home folder).

However, since path isn't recursive, you'll need to add each individual tool folder.

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