Ziel von Shebang ändern

Ziel von Shebang ändern

Ich möchte das Ziel python3zur Verwendung in Shebangs erstellen. Verwenden Sie beispielsweise die erste Zeile #!/usr/bin/env python3.

Was ich versucht habe:

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

  • /bin/env NAME=python3 PATH_TO_BINARY, öffnet Python3, erlaubt aber nicht die Verwendung des Shebangs. Dasselbe gilt für /bin/env python3=PATH_TO_BINARY

Falls es wichtig ist, würde ich gerne folgendes Problem lösen:

Ich arbeite an einem rhel 6System, auf dem ich es nicht direkt installieren kann, python3das ich jedoch verwenden kann und anaconda3das auf einer zugänglichen Netzwerkressource installiert ist. Anstatt den Shebang mit dem absoluten Pfad zu platzieren, möchte ich den Python3-Pfad richtig festlegen und portablen Code schreiben.

Antwort1

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

#!/usr/bin/env python3

Dies hat zur Folge, dass python3in den in Ihrer Variable aufgeführten Verzeichnissen nach dem Interpreter gesucht wird $PATH.

Wenn python3beispielsweise installiert ist $HOME/local/bin, dann muss dieses Verzeichnis vorhanden sein in$PATH Vorjedes andere Verzeichnis, das möglicherweise auch einen python3Interpreter enthält, andernfalls wird dieser anstelle Ihres eigenen in verwendet $HOME/local/bin.

Sie müssen also festlegen

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

Entweder auf der Kommandozeile oder in einem Shell-Initialisierungsskript ( ~/.bashrczum Beispiel). C-Shell-Benutzer machen es anders...

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

Im Allgemeinen #!identifiziert die -Linieder Dolmetscherfür das Skript, d. h. welches Programm zum Parsen und Ausführen der Datei verwendet werden soll. Ein sedSkript kann beispielsweise verwenden #!/usr/bin/sed -f.

verwandte Informationen