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

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

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

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

  • /bin/env NAME=python3 PATH_TO_BINARY, открывает python3, но не позволяет использовать шебанг. То же самое для /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)

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

Другие вопросы по тегам