首页/系统/Linux 运维命令速查/cron 环境变量:PATH/SHELL/MAILTO
定时任务与计划50 条

cron 环境变量:PATH/SHELL/MAILTO

cron 不读用户 profile,PATH 极简、没有 alias;在 crontab 顶部声明 PATH、MAILTO、SHELL,是任务稳定运行的第一道防线。

Linux 运维命令速查系统更新于 2026-10-13

cron 环境变量是什么

cron 不读用户的 shell 配置:命令搜索路径极简、没有别名、语言环境变量也可能不同。在任务表顶部显式声明环境变量,是让任务稳定运行的第一道防线。最常声明的是命令搜索路径、登录解释器与通知邮箱,另有语言环境用于处理多字节文本。

基本信息

适用场景让定时任务拥有可预期的执行环境
声明位置任务表文件顶部,必须在任务行之前
常用变量命令搜索路径、登录解释器、通知邮箱、家目录、语言环境
作用范围只对当前任务表内的后续任务行生效

典型使用场景

  • 脚本依赖非系统目录里的命令,需要明确搜索路径
  • 输出需要按特定编码写入文件,避免中文乱码
  • 希望任务失败时收到邮件通知,明确指定收件人
  • 任务需要知道家目录,才能正确找到用户的配置文件
  • 需要在任务里固定语言环境,保证排序与比较结果一致

任务表顶部声明

任务表顶部声明
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
SHELL=/bin/bash
MAILTO=ops@example.com
LANG=en_US.UTF-8

0 2 * * * /opt/app/backup.sh >> /var/log/backup.log 2>&1

常用变量

变量作用要点
命令搜索路径决定能找到哪些命令建议显式声明完整路径
登录解释器决定用哪个 shell 执行任务与交互环境可能不同
通知邮箱任务输出的投递目标地址不可达时输出会被丢弃
家目录用户配置文件所在位置影响依赖家目录的脚本
语言环境字符处理与排序规则影响多字节文本与比较结果
任务里用到的命令建议写绝对路径:服务化账号的执行环境与登录 shell 差异更大,直接依赖搜索路径很容易失败。
通知邮箱指向不可达的邮件系统时,任务输出会堆积在本地邮箱文件里或被静默丢弃;把所有输出统一重定向到日志文件更可靠,也便于事后排查。

易错点

  • 不声明搜索路径,脚本依赖的命令在非交互环境下找不到
  • 通知邮箱写错或不可达,任务报错既不送达也不显眼
  • 语言环境不同导致文本处理与排序结果和交互环境不一致
  • 变量声明写在任务行之后,对前面的任务不生效
  • 环境变量只在当前任务表内有效,换到系统级配置要重新声明

数据来源与参考

  • man 5 crontab(environment 一节)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌