В некоторых системах, включая Linux, эффект
#!/usr/bin/env TEST=TEST python
строка в 'hello.py', если вы запускаете ее с './hello.py', совпадает с
/usr/bin/env 'TEST=TEST python' ./hello.py
Обратите внимание, что 'TEST = TEST python' - это все один аргумент. Это заставляет 'env' установить переменную окружения TEST
равной 'TEST python'
, а затем запустить ./hello.py
с exec . Затем линия Шебанга обрабатывается снова, и процесс повторяется рекурсивно. Общий эффект заключается в том, что env
выполняется снова и снова, пока процесс не будет прерван. Если вы запустите top
в системе во время выполнения, вы увидите очень загруженный процесс.
См. Статью Shebang (Unix) в Википедии, чтобы узнать, как работает механизм #!
. Он включает в себя некоторые детали различий в том, как он обрабатывается в разных системах.
Невозможно установить переменные среды в строке shebang в Linux и многих других системах. Вам нужно будет либо установить их в самой программе, либо, если это не подходит, использовать программу-оболочку (например, тривиальную программу оболочки) для запуска программы Python.