Ubuntu 定时任务中的环境变量设置
背景
1,定时任务命令 crontab -e
2,默认的环境变量
SHELL=/bin/sh PATH=/usr/bin:/bin PWD=/home/owl LANG=zh_CN.UTF-8 SHLVL=1 HOME=/home/owl LANGUAGE=zh_CN:zh LOGNAME=owl _=/usr/bin/env
解决方法
一、使用绝对路径;
二、手动设置环境变量
在shell文件开头
PATH=/...
export PATH
三、批量设置环境变量
1,在shell文件中执行2
2,使用source指令执行shell文件
遇到的问题
问题:在crontab定时执行的shell文件中无法执行source指令
分析:在命令行中执行该shell文件正常,推测环境变量问题。
解决:1,尝试在运行source指令前,修改PATH环境变量,无效。
原因是,source是bash指令,其执行不依赖环境变量,只取决于shell的执行器。
2,修改SHELL环境变量为/bin/bash,执行成功。
总结
shell的执行器有bash、sh等
在shell的开头通过 #!/bin/sh或 #!/bin/bash 注明该shell的执行器。
手动执行方式 sh+shell文件 或bash+shell文件