crontab no puede encontrar la variable de entorno incluso después de obtener .bashrc

crontab no puede encontrar la variable de entorno incluso después de obtener .bashrc
crontab -e
00 00 * * * /home/username/run.sh >> /home/username/log 2>&1

Dentro de run.sh:

source /home/username/.bashrc
java

Cuando se activa el trabajo crontab, aparece este error en el registro:

/home/username/run.sh: 1: /home/username/run.sh: java: not found

Sin embargo, la ruta de Java está configurada en /home/username/.bashrc, por lo que esperaba que el abastecimiento estableciera la ruta de Java:

Sé que puedo solucionarlo mediante:

export PATH="/usr/local/jdk1.8.0_231/bin:$PATH"
java

Pero, ¿por qué no es suficiente obtener .bashrc? ¿Qué variables de entorno tiene exactamente crontab y qué hace exactamente source .bashrc (para que crontab no lo tenga en cuenta)?

Gracias.

Respuesta1

Tengo algunas conjeturas pero puede que me equivoque:

  • cuando abrimos un shell bash, iniciamos un proceso bash y, cuando ejecutamos .bashrc, solo se realizan cambios en el entorno de este proceso bash.
  • crontab tiene su propio proceso que no tiene relación con el proceso bash abierto
  • al obtener .bashrc, solo realiza cambios en el proceso bash (¿aunque no hay ninguno cuando se ejecuta crontab?), por lo tanto, crontab todavía no tiene ningún cambio en la variable de entorno

Por lo tanto, obtener .bashrc no ayuda a crontab.

información relacionada