Un shell non interactif et sans connexion essaiera de source n'importe quel script spécifié dans $ BASH_ENV. Mais comment puis-je garantir que $ BASH_ENV est défini avant qu'un travail cron ou un script ait la possibilité de définir $ BASH_ENV pour une session particulière? La seule option pour compiler Bash avec est-elle codée en dur?
bash
environment-variables
Igorio
la source
la source
pam_env
. Ou simplement source$HOME/.env
dans tous vos scripts.Réponses:
Si vous voulez que tous les scripts bash de votre crontab se chargent
BASH_ENV
, définissez-le au niveau de crontab.Si vous souhaitez définir
BASH_ENV
uniquement pour une entrée particulière, définissez-le là. EnsuiteBASH_ENV
, le code répertorié dans la crontab ne sera pas défini, mais c'est quand même une mauvaise idée d'y mettre quelque chose de complexe.Si vous souhaitez qu'un script particulier charge toujours un fichier de configuration, chargez-le directement à partir du script.
la source
export
ing$BASH_ENV
si vous configurez que pour un seul processus? C'est justeBASH_ENV=/path/to/startup.bash /path/to/bash_script
la manière sensée de le faire.BASH_ENV
n'est lu que dans un shell non interactif , et uniquement si ce shell est bash (et n'est pas appelé non plus sous le nomsh
). Un shell interactif sans connexion ne recherche pas$BASH_ENV
:Aucun fichier standard n'est exécuté dans un shell non interactif pour l'utilisateur. Vous devez le placer dans un fichier séparé puis le source:
Ou vous pouvez le définir dans un fichier de configuration à l'échelle du système comme
/etc/environment
ou/etc/bashrc.bashrc
.la source