
Estoy ejecutando un script de shell simple que funciona bien en un shell de inicio de sesión desde cron
donde no se ejecuta. Por alguna razón, /usr/local/bin
no está en la ruta del usuario cuando se ejecuta, cron
mientras que sí lo está cuando se ejecuta en un shell.
¿Dónde está el entorno para cron
lo 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.