
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.