Cron s'exécute toujours avec un environnement essentiellement vide. HOME
, LOGNAME
, et SHELL
sont définis ; et un PATH
très limité . Il est donc conseillé d'utiliser des chemins complets vers les exécutables et d'exporter les variables dont vous avez besoin dans votre script lorsque vous utilisez cron
.
Il existe plusieurs approches que vous pouvez utiliser pour définir vos variables d'environnement dans cron
, mais ils reviennent tous à le définir dans votre script.
Approche 1 :
Définissez manuellement chaque variable dont vous avez besoin dans votre script.
Approche 2 :
Sourcez votre profil :
. $HOME/.bash_profile
(ou . $HOME/.profile
)
(Vous constaterez généralement que le fichier ci-dessus source d'autres fichiers (par exemple ~/.bashrc
--> /etc/bashrc
--> /etc/profile.d/*
) - si ce n'est pas le cas, vous pouvez également vous en procurer.)
Approche 3 :
Enregistrez vos variables d'environnement dans un fichier (exécuté en tant qu'utilisateur souhaité) :
env > /path/to/my_env.sh
Importez ensuite via votre script cron :
env - `cat /path/to/my_env.sh` /bin/sh
Approche 4 :
Dans certains cas, vous pouvez définir le cron
global variable en /etc/default/cron
. Il y a cependant un élément de risque à cela, car ceux-ci seront définis pour tous les cron
emplois.