How to avoid python shebang line on linux.

Gribouillis 0 Tallied Votes 1K Views Share

You can teach your linux system that executable python files must be executed with /usr/bin/python. This allows you to write python scripts without the shebang line #!/usr/bin/env python . This snippet shows you how to do it !

# This is rather a shell code snippet than a python code snippet :)

# Your linux system can recognize that an executable file 
# with extension ".py" must be executed with the python interpreter.
# For this, issue the following command in a terminal (as root):

echo ':Python:E::py::/usr/bin/python:' > /proc/sys/fs/binfmt_misc/register

# Now test this:

echo "print dir()" > mytest.py # create a python script in the current dir
chmod +x mytest.py # make it executable
./mytest.py # run it

# You dont need the shebang line '#!/usr/bin/env python'
# in your scripts any more !!!!!

# Now we don't want to do this each time we log in. We can
# edit (as root) a file named rc.local. It can be  /etc/rc.local
# on your system. On mine this file is a symbolic
# link and the true file is /etc/rc.d/rc.local. Anyway,
# we add the following lines at the beginning of this file

if [ -e /proc/sys/fs/binfmt_misc ]; then
  echo ':Python:E::py::/usr/bin/python:' > /proc/sys/fs/binfmt_misc/register
fi

# Now your system knows that ".py" files must be interpreted
# with /usr/bin/python.
scru 909 Posting Virtuoso Featured Poster

If you want your scripts to be portable you do.

Gribouillis 1,391 Programming Explorer Team Colleague

Yes, but 99% of my scripts don't need to be portable. Also, if absolutely necessary, you can always call python mytest.py .

Gribouillis 1,391 Programming Explorer Team Colleague

This is an addendum, because in my linux mint system, I could not write to /proc/sys/fs/binfmt_misc/register. The solution, which should also work in ubuntu, is to install the package binfmt-support with the software manager, then give the command

sudo update-binfmts --install Python /usr/bin/python --extension py

in a terminal. No rc.local or other configuration file manipulation is required.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.