Variables de entorno cron

Variables de entorno cron

Estoy ejecutando un script de shell simple que funciona bien en un shell de inicio de sesión desde crondonde no se ejecuta. Por alguna razón, /usr/local/binno está en la ruta del usuario cuando se ejecuta, cronmientras que sí lo está cuando se ejecuta en un shell.

¿Dónde está el entorno para cronlo determinado?

Respuesta1

Generalmente, desde el entorno sin inicio de sesión establecido para /bin/sh, que es el predeterminado utilizado para ejecutar el comando.

Puede configurar variables de entorno adicionales en su crontab en la mayoría de las versiones, vis:

PATH=/usr/local/bin:/usr/bin:/bin
@reboot whatever

Consulte crontab(5)los detalles;man 5 crontab

Respuesta2

Compruebe qué shell está utilizando su script.

El shell y las variables para crontab se especifican en /etc/crontab

x@x:~$ cat /etc/crontab 

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

El archivo de perfil utilizado por sh está en la página de inicio del usuario.

x@x:~$ ls ~/.profile 
/home/x/.profile

Puede agregar la variable PATH al final de este archivo (asegúrese de agregar el archivo de perfil del usuario correcto)

PATH="$PATH:/usr/local/bin"

o puedes agregar la misma línea en tu propio script.

información relacionada