So ändern Sie $PATH global

So ändern Sie $PATH global

Auf meinem DebianServer verwende ich crontabzum Planen eines pythonCodes. Das Problem ist: Wenn ich eine Zeile wie diese hinzufüge:

6 9 * * * python /path/to/daily_task.py &> $HOME/out.txt

Wenig überraschend besagt die Ausgabe, dass der pythonBefehl nicht gefunden wurde.

Natürlich kann ich einfach einen vollständigen Pfad zu einem Crontab-Eintrag wie hinzufügen /opt/python/3.9.2/bin/python, aber diese Idee gefällt mir nicht, weil sie chaotisch aussieht und dieses Problem auch weiterhin besteht, wenn ich beispielsweise etwas wie os.system("python task.py")in tun muss daily_task.py.

Ich habe versucht, die Zeile wie folgt hinzuzufügen /etc/environment:

export PATH="$PATH:/opt/python/3.9.2/bin/"

Nach einem Neustart konnte ich es zwar einfach pythonin meinem Terminalfenster verwenden, aber crontabes $PATHbesteht immer noch nur aus /usr/bin.

Wo soll ich diesen Code einfügen, damit er überall geändert wird $PATH, auch crontab(ohne die Crontab-Datei zu ändern)?

Antwort1

Wenn Sie sich den Inhalt von ansehen /bin, werden Sie viele symbolische Links sehen, da viele Programme nicht direkt in den Bin-Verzeichnissen abgelegt sind. Sie können dasselbe tun:

sudo ln -s /opt/python/3.9.2/bin/python /usr/bin

Auf diese Weise müssen Sie Ihre nicht ändern crontab.

Antwort2

Sie können Umgebungsvariablen in Ihrer Crontab-Datei selbst wie folgt hinzufügen:

PATH=/usr/bin:/whatever/bin
HOME=/home/myuser
6 9 * * * python /path/to/daily_task.py &> $HOME/out.txt

verwandte Informationen