Изменить цель шебанга

Изменить цель шебанга

Я хотел бы создать цель, python3которая будет использоваться в шебангах. Например, использовать первую строку #!/usr/bin/env python3.

Что я пробовал:

  • setenv python3 PATH_TO_BINARY, также поместите его в .cshrc, echo $python3 также показывает путь

  • /bin/env NAME=python3 PATH_TO_BINARY, открывает python3, но не позволяет использовать shebang. То же самое для /bin/env python3=PATH_TO_BINARY

Если это имеет значение, я хотел бы решить следующую проблему:

Я работаю над rhel 6системой, которую я не могу установить напрямую, python3однако я могу использовать ее поверх anaconda3, которая установлена ​​на доступном сетевом ресурсе. Вместо того, чтобы помещать shebang с абсолютным путем, я хотел бы правильно установить путь python3, чтобы написать переносимый код.

решение1

#!В этом случае вам следует менять не строку , а ваш $PATH.

#!/usr/bin/env python3

Это приведет к тому, что python3интерпретатор будет искаться в каталогах, перечисленных в вашей $PATHпеременной.

Если python3установлен, например, в $HOME/local/bin, то этот каталог должен присутствовать в$PATH долюбой другой каталог, который также может содержать python3интерпретатор, в противном случае он будет использоваться вместо вашего собственного в $HOME/local/bin.

Итак, вам нужно установить

PATH="$HOME/local/bin:$PATH"

Либо в командной строке, либо в скрипте инициализации оболочки ( ~/.bashrcнапример). Пользователи C-shell делают это по-другому...

set path = ($HOME/local/bin $path)

В общем, #!-строка идентифицируетпереводчикдля скрипта, т.е. какую программу использовать для разбора и запуска файла. Скрипт sed, например, может использовать #!/usr/bin/sed -f.

Связанный контент