Ändern Sie das Ziel von Shebang

627
magu_

Ich möchte das Ziel python3erstellen, das in Shebangs verwendet werden soll. Z.B. Verwenden Sie die erste Zeile #!/usr/bin/env python3.

Was ich probiert habe:

  • setenv python3 PATH_TO_BINARY, füge es auch in ein .cshrc, echo $ python3 zeigt auch Pfad

  • / bin / env NAME = python3 PATH_TO_BINARY, öffnet python3, erlaubt jedoch keine Verwendung des Shebang. Dasselbe gilt für / bin / env python3 = PATH_TO_BINARY

Wenn es darauf ankommt, möchte ich folgendes Problem lösen:

Ich arbeite an einem rhel 6System, wo ich nicht direkt installieren kann, python3aber ich kann es verwenden, über anaconda3das auf einer zugänglichen Netzwerkressource installiert wird. Anstatt den Shebang mit dem absoluten Pfad zu versehen, möchte ich den tragbaren Code für den Python3-Pfad schreiben.

0

1 Antwort auf die Frage

2
Kusalananda

In diesem Fall sollten Sie nicht die #!Zeile ändern, sondern Ihre $PATH.

#!/usr/bin/env python3 

Dies hat zur Folge, dass der python3Interpreter in den Verzeichnissen Ihrer $PATHVariablen gesucht wird.

Wenn python3installiert wurde, zum Beispiel $HOME/local/bin, dann muss dieses Verzeichnis in vorhanden sein, $PATH bevor ein anderes Verzeichnis, das auch einen enthalten python3Dolmetscher, sonst wird, dass man in anstelle des eigenen verwendet werden $HOME/local/bin.

Sie müssen also einstellen

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

Entweder in der Befehlszeile oder in einem Shell-Initialisierungsskript ( ~/.bashrczum Beispiel). C-Shell-Benutzer machen das anders ...

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

Im Allgemeinen gibt die #!-line den Interpreter für das Skript an, dh welches Programm zum Analysieren und Ausführen der Datei verwendet wird. Ein sedSkript kann beispielsweise verwenden #!/usr/bin/sed -f.

Das war's. Vielen Dank für die Beantwortung meiner Frage, obwohl ich tatsächlich die falsche Frage gestellt habe. magu_ vor 8 Jahren 0