If I have a basic Python script, with it\'s hashbang and what-not in place, so that from the terminal on Linux I can run
/path/to/file/MyScript [args]
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):
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. chmod+x
when you save your script in ~/bin
.~/bin
folder, if you are just testing something or working on unfinished script, its always better to use ./$SCRIPT_NAME from your CWD
to execute the script than putting it under ~/bin
.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.
you can also use setuptools
(https://pypi.org/project/setuptools/)
def hi():
print("hi")
(suppose the file name is hello.py
)
also add __init__.py
file next to your script (with nothing in it).
add setup.py
script, with the content:
#!/usr/bin/env python3
import setuptools
install_requires = [
'WHATEVER PACKAGES YOU NEED GOES HERE'
]
setuptools.setup(
name="some_utils",
version="1.1",
packages=setuptools.find_packages(),
install_requires=install_requires,
entry_points={
'console_scripts': [
'cool_script = hello:hi',
],
},
include_package_data=True,
)
python setup.py develop
in this foldercool_script
and your script will run.Just create symbolic link to your script in /usr/local/bin/:
sudo ln -s /path/to/your/script.py /usr/local/bin/script