Where should I put my script so that I can run it by a direct command? [duplicate]

Where can (should) I put my (bash) script so that it can be used (forever) by terminal or by a direct command: Alt+F2?

I know there is /usr/bin and /sbin & /bindirectories but when should I use between them?

Where should I put my script?


Solution 1:

It depends on who will use your script:

  • Only you - $HOME/.local/bin (As per the XDG Base Directory Specification)
  • You and other local users - /usr/local/bin
  • root only - /usr/local/sbin

That way you have your own scripts separated from the distribution-provided binaries.

Solution 2:

Don't use these directories:

/usr/bin, /sbin and /bin

Leave them for package-managed executables.


If you need the script for one user, waltinator's answer is fine.

If you need the script for all users on your system (but you can also use this for one user), stick it in /usr/local/bin/. One advantage: this directory is already in your PATH so there is no need to edit files.

Solution 3:

You should put your script under $HOME/bin. Follow below PATH to achieve this:

  1. Create a folder using mkdir $HOME/bin
  2. Then put your script in $HOME/bin

  3. Finally, add the following line under $HOME/.bashrc by editing with gedit $HOME/.bashrc

export PATH="$HOME/bin:$PATH"

When the system is looking for the command you typed, it will look in each directory of $PATH and execute the first match it finds.