Debian在Crontab中使用环境变量

AI大语言模型

在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 '要执行的命令'
AI大语言模型