
Ich möchte das Ziel python3
zur 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 6
System, auf dem ich es nicht direkt installieren kann, python3
das ich jedoch verwenden kann und anaconda3
das 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 python3
in den in Ihrer Variable aufgeführten Verzeichnissen nach dem Interpreter gesucht wird $PATH
.
Wenn python3
beispielsweise installiert ist $HOME/local/bin
, dann muss dieses Verzeichnis vorhanden sein in$PATH
Vorjedes andere Verzeichnis, das möglicherweise auch einen python3
Interpreter 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 ( ~/.bashrc
zum 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 sed
Skript kann beispielsweise verwenden #!/usr/bin/sed -f
.