
Я хотел бы создать цель, 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
.