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

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

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

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

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

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

1 ответ1

2

В этом случае это не #! -линии вы должны меняться, но ваш $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)

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .