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

549
magu_

Я хотел бы создать цель python3для использования в шебангах. Например. используйте первую строку #!/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 для записи переносимого кода.

0

1 ответ на вопрос

2
Kusalananda

In this case, it's not the #!-line you should be changing, but your $PATH.

#!/usr/bin/env python3 

This has the effect that the python3 interpreter will be searched for in the directories listed in your $PATH variable.

If python3 is installed in, e.g., $HOME/local/bin, then this directory must be present in $PATH before any other directory that may also contain a python3 interpreter, otherwise that one will be used instead of your own in $HOME/local/bin.

So you need to set

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

Either on the command line, or in a shell initialization script (~/.bashrc for example). C-shell users do it differently...

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

In general, the #!-line identifies the interpreter for the script, i.e. what program to use to parse and run the file. A sed script, for example, may use #!/usr/bin/sed -f.

Это было это. Спасибо за ответ на мой вопрос, хотя я на самом деле спросил не тот. magu_ 8 лет назад 0