即使在获取 .bashrc 后,crontab 也找不到环境变量

即使在获取 .bashrc 后,crontab 也找不到环境变量
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 没有帮助。

相关内容