如何全域修改$PATH

如何全域修改$PATH

在我的Debian伺服器上,我用來crontab安排python程式碼。問題是:當我添加這樣的行時:

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

毫不奇怪,輸出表明python未找到命令。

當然,我可以只為 crontab 條目添加完整路徑/opt/python/3.9.2/bin/python,例如 ,但我不喜歡這個想法,因為它看起來很混亂,並且當我需要執行諸如 之類的操作時,這個問題也仍然os.system("python task.py")存在daily_task.py

我嘗試將這樣的行添加到/etc/environment

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

重新啟動後,我確實可以python在終端視窗中使用,但crontab仍然$PATH只包含/usr/bin.

我應該在哪裡放置此程式碼以在各處進行更改$PATH,包括crontab(不更改 crontab 檔案)?

答案1

如果您查看 的內容/bin,您會看到很多符號鏈接,因為許多程式沒有直接放入 bin 目錄中。你也可以做到的:

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

這樣,您就不需要修改您的crontab.

答案2

您可以在 crontab 檔案本身中新增環境變量,如下所示:

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

相關內容