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
& /bin
directories but when should I use between them?
Where should I put my script?
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
& /bin
directories but when should I use between them?
Where should I put my script?
It depends on who will use your script:
$HOME/.local/bin
(As per the XDG Base Directory Specification)/usr/local/bin
root
only - /usr/local/sbin
That way you have your own scripts separated from the distribution-provided binaries.
.../sbin
directories are used for statically-linked binaries (mostly used by root
, before shared libraries are available), not user scripts.
– waltinator
May 13 '14 at 12:12
/sbin
, not /usr/sbin
or /usr/local/sbin
. The Filesystem Hierarchy Standard states that "Locally installed system administration programs should be placed in /usr/local/sbin." [link].
– Twinkles
May 13 '14 at 12:45
sbin
directories are being phased out and there really is no reason to separate them. For more on that, see here.
– terdon
May 13 '14 at 14:19
~/.local/bin
? (which is already in the PATH
in a couple distributions)
– Joschua
May 31 '19 at 21:59
$HOME/.local/bin
to be precreated on a ubuntu install? It wasn't for me nor is it in my $PATH. (Ubuntu 20.04.2 LTS on WSL2)
– Iain
Feb 08 '22 at 03:18
$HOME/.local/bin
to $PATH
. Ubuntu only does so if that directory exists. So, after you create that folder, simply source ~/.profile
or log out and back in to have it in your PATH.
– Twinkles
Feb 10 '22 at 10:54
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.
.sh
file? Take a hello-world.sh
file for example.
– Enrique Bermúdez
Mar 10 '20 at 12:42
#!/bin/sh
at the first line, chmod
it +x
and put it in /usr/local/bin/
. The extension is not needed. when you run it it will execute your script with /bin/sh
. You can also put /bin/node
there for a javascript file.
– Antoni
Jul 11 '21 at 07:30
You should put your script under $HOME/bin
. Follow below PATH to achieve this:
mkdir $HOME/bin
Then put your script in $HOME/bin
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.
~/.profile
. ;)
– Gunnar Hjalmarsson
May 13 '14 at 06:24
$HOME/bin
, then they can already rm -rf ~
. I always prefer prepending custom paths, since it's an explicit decision I've made.
– Sparhawk
May 15 '14 at 06:27
alias cp='cp -i --preserve=all'
on my system, so I certainly don't use a "default" system. I copy my .bashrc
to new servers, etc.
– Sparhawk
May 16 '14 at 05:59
~/.local/bin
is already in the PATH
. Any reason against using it for personal scripts?
– Joschua
May 31 '19 at 12:02
~/.local/bin
as tools like pip
will also install to that directory.
– xikkub
Nov 07 '20 at 06:44