crontab -e
00 00 * * * /home/username/run.sh >> /home/username/log 2>&1
run.sh 内部:
source /home/username/.bashrc
java
当 crontab 作业被触发时,我在日志中收到以下错误:
/home/username/run.sh: 1: /home/username/run.sh: java: not found
但是,java路径是在/home/username/.bashrc中设置的,所以我期望采购应该设置java路径:
我知道我可以通过以下方式修复它:
export PATH="/usr/local/jdk1.8.0_231/bin:$PATH"
java
但为什么采购 .bashrc 还不够呢? crontab 到底有哪些环境变量以及 source .bashrc 到底做了什么(以便 crontab 不考虑它)?
谢谢。
答案1
我有一些猜测,但可能是错误的:
- 当我们打开 bash shell 时,我们启动一个 bash 进程,并且在运行 .bashrc 时,它仅更改该 bash 进程的环境
- crontab有自己的进程,与打开的bash进程无关
- 当获取.bashrc时,它只对bash进程进行更改(尽管运行crontab时没有任何更改??),因此crontab仍然没有对环境变量进行任何更改
因此,获取 .bashrc 对 crontab 没有帮助。