Debian在Crontab中使用环境变量
在Shell会话中,可以定义临时生效的环境变量:
export MY_TOKEN=""
对于当前用户,可以在.bashrc中定义永久生效的环境变量:
nano ~/.bashrc
export MY_TOKEN=""
source ~/.bashrc
当前用户环境变量配置文件说明:
- .bashrc:交互式Shell,登录Shell间接加载,非登录Shell直接加载;
- .bash_profile:登录Shell,如 ssh 远程登录、su - 切换用户加载,优先于.bash_login;
- .bash_login:登录 Shell 加载,优先使用.bash_profile;
- .profile:通用登录 Shell 配置,bash/sh 通用,无.bash_profile 时加载。
全局用户环境变量配置文件说明:
- /etc/profile:全局登录 Shell 配置,所有用户登录时加载;
- /etc/bash.bashrc:全局交互式 Shell 配置,Debian 专属,所有 bash 交互式 Shell 加载;
- /etc/environment:系统级环境变量,无 Shell 语法,纯键值对,PAM 模块加载,适合所有进程;
- /etc/profile.d/*.sh:将自定义配置拆分为独立.sh 文件放在此目录,自动被 /etc/profile 加载。
Crontab中使用环境变量
在Crontab中定义环境变量:
crontab -e
# 在Crontab的顶部定义变量
MY_CRON_VAR=""
...
* * * * * echo $MY_CRON_VAR >> ~/cron_var.log
如果不希望敏感信息出现在Crontab中,可以在environment中定义:
sudo nano /etc/environment
MY_CRON_VAR=""
如果需要在Crontab使用.bashrc中定义的变量,需要传递i标志:
* * * * * bash -i -c '要执行的命令'

