Допустим, мы хотим сохранить его переносимым, чтобы он продолжал функционировать, даже если его просто скопировать в другое место (на разные машины) без вызова установки/установки или изменения среды (PATH). Для этих сценариев не следует использовать системный интерпретатор.
Данные ограничения исключают оба известных подхода, таких как shebang с абсолютным путем:
Код: Выделить всё
#!/usr/bin/python
Код: Выделить всё
#!/usr/bin/env python
Я нашел хорошее описание ограничений shebang, которые описывают, почему относительный путь в shebang бесполезен, и интерпретатору не может быть более одного аргумента: http://www.in-ulm.de/~mascheck/various/shebang/
А еще я нашел практические решения для большинства языков с помощью Трюки с «многострочным шебэнгом». Он позволяет писать такие скрипты:
Код: Выделить всё
#!/bin/sh
"exec" "`dirname $0`/python2.7" "$0" "$@"
print copyright
Код: Выделить всё
python setup.py build --executable=/opt/local/bin/python
Вопрос
Как написать шебанг, который указывает интерпретатору путь относительно местоположения выполняемого скрипта?
Подробнее здесь: https://stackoverflow.com/questions/332 ... nterpreter