Why is '#!/usr/bin/env python' supposedly more correct than just '#!/usr/bin/python'?

PythonBash

Python Problem Overview


Anyone know this? I've never been able to find an answer.

Python Solutions


Solution 1 - Python

If you're prone to installing python in various and interesting places on your PATH (as in $PATH in typical Unix shells, %PATH on typical Windows ones), using /usr/bin/env will accomodate your whim (well, in Unix-like environments at least) while going directly to /usr/bin/python won't. But losing control of what version of Python your scripts run under is no unalloyed bargain... if you look at my code you're more likely to see it start with, e.g., #!/usr/local/bin/python2.5 rather than with an open and accepting #!/usr/bin/env python -- assuming the script is important I like to ensure it's run with the specific version I have tested and developed it with, NOT a semi-random one;-).

Solution 2 - Python

From wikipedia

> Shebangs specify absolute paths to system executables; this can cause > problems on systems which have non-standard file system layouts > > Often, the program /usr/bin/env can be used to circumvent this > limitation

Solution 3 - Python

it finds the python executable in your environment and uses that. it's more portable because python may not always be in /usr/bin/python. env is always located in /usr/bin.

Solution 4 - Python

It finds 'python' also in /usr/local/bin, ~/bin, /opt/bin, ... or wherever it may hide.

Solution 5 - Python

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionKenneth ReitzView Question on Stackoverflow
Solution 1 - PythonAlex MartelliView Answer on Stackoverflow
Solution 2 - PythonS.LottView Answer on Stackoverflow
Solution 3 - PythonCharles MaView Answer on Stackoverflow
Solution 4 - PythonDirk EddelbuettelView Answer on Stackoverflow
Solution 5 - PythonJames BlackView Answer on Stackoverflow