简体   繁体   English

python 脚本不获取在 crontab 中设置的环境变量

[英]python script doesn’t pick up environment variable that is set in crontab

When i run my python script from terminal i get error due to missing env variable.当我从终端运行我的 python 脚本时,由于缺少 env 变量而出现错误。 i can fix by this using export and setting it.我可以使用export和设置来解决这个问题。 But there are other python scripts that are running fine as cron jobs that require this as well.但是还有其他 python 脚本作为 cron 作业运行良好,也需要它。 And i see this env variable being set in cron tab.我看到这个 env 变量被设置在 cron 选项卡中。 So my question is if env variable set in cron is available for scripts run by user/root from cli?所以我的问题是 cron 中设置的 env 变量是否可用于用户/root 从 cli 运行的脚本? Running env command as root doesn't show this variable.以 root 身份运行env命令不会显示此变量。

Environment variables are private to each process, not global.环境变量是每个进程私有的,而不是全局的。 When a new process is started it inherits its initial environment from its parent.启动新进程时,它会从其父进程继承其初始环境。 Your terminal shell isn't started by cron so it doesn't inherit the env vars you've set in your crontab.您的终端 shell 不是由 cron 启动的,因此它不会继承您在 crontab 中设置的环境变量。

Your OS may provide a standard mechanism for setting env vars for all processes (eg, your terminal which then starts your CLI shell).您的操作系统可能会提供一种标准机制来为所有进程设置环境变量(例如,您的终端会启动您的 CLI shell)。 What I prefer to do is create a file named ~/.environ that I then source in my ~/.bashrc and cron jobs.我更喜欢做的是创建一个名为~/.environ的文件,然后我在我的~/.bashrc source cron 作业中获取该文件。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM