How do I install a script to run anywhere from the command line?
Walkthrough of making a python script available anywhere:
Make a python script:
cd /home/el/bin
touch stuff.py
chmod +x stuff.py
Find out where your python is:
which python
/usr/bin/python
Put this code in there:
#!/usr/bin/python
print "hi"
Run in it the same directory:
python stuff.py
Go up a directory and it's not available:
cd ..
stuff.py
-bash: stuff.py: command not found
Not found! It's as we expect, add the file path of the python file to the $PATH
vi ~/.bashrc
Add the file:
export PATH=$PATH:/home/el/bin
Save it out, re apply the .bashrc, and retry
source ~/.bashrc
Try again:
cd /home/el
stuff.py
Prints:
hi
The trick is that the bash shell knows the language of the file via the shebang.
Just create ~/bin
and put export PATH=$PATH:$HOME/bin
in your bashrc/profile. Don't mess with the system, it will bite you back, trust me.
Few more things (relevant to the question but not part of the answer):
- The other way
export PATH=$HOME/bin:$PATH
is NOT safe, for bash will will look into your~/bin
folder for executables, and if their name matches with other executables in your original$PATH
you will be surprised by unexpected/non working command execution. - Don't forget to
chmod+x
when you save your script in~/bin
. - Be aware of what you are putting in your
~/bin
folder, if you are just testing something or working on unfinished script, its always better to use ./$SCRIPT_NAME from yourCWD
to execute the script than putting it under~/bin
.
The best place to put things like this is /usr/local/bin
.
This is the normal place to put custom installed binaries, and should be early in your PATH
.
Simply copy the script there (probably using sudo
), and it should work for any user.