Some programs can be executed from anywhere with a single one-word command. An example of this is youtube-dl, which is a python program that can be executed with the simple command youtube-dl [input]
. As far as I have understood, this is simply because there exists a file called /usr/bin/youtube-dl
, and /usr/bin
is in PATH. However, I do not understand what I have to do to make something like this myself. Right now, I have a python project called testproject
that includes a python program like this:
~/testproject/files/myownprogram.py
What do I have to do to make this a binary executable such as youtube-dl?
I know I can make an alias mop="python ~/testproject/files/myownprogram.py"
, and this is also what I have done, and it works fine. That is, I can write $ mop
, and successfully run my program.
But for curiosity's, and learning's, sake, I want to know how to make a file such as the /usr/bin/youtube-dl
file, removing the need for aliases.
I find this hard to find information about in search engines... Any help is greatly appreciated! :-)
Edit:
My question differs from the one marked as duplicate, in that I'm not looking to execute it as a .sh-script. I simply want to execute it as a suffix-less one-word command, similar to all the other executables that are in /usr/bin
. :-)
Ex.: $ myown
should run my program, without the need for aliases or writing ".sh" or ".py" at the prompt. That is, I want to have a file /usr/bin/myown
that somehow runs my testproject
at the simple command myown
from anywhere.