如何全局修改$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")in 的操作时,此问题也仍然存在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

相关内容