J'utilise le service systemd pour mon script, je dois définir les valeurs d'environnement à partir d'un home/user/.bashrc
source /home/user/.bashrc
Ne fonctionne pas dans le script et la graine systemd ne prend pas en charge la fonction d'approvisionnement. Aidez moi
Au lieu d'essayer de générer un fichier d'environnement, demandez à un shell d'exécuter vos scripts de démarrage et puis d'exécuter votre commande. Cela évite les étapes qui peuvent introduire une incompatibilité (entre la façon dont env
stocke votre environnement et la façon dont l'option systemd EnvironmentFile
le charge).
[Service]
Type=simple
User=user
Group=user
ExecStart=/bin/bash -l -c 'exec "$@"' _ your-command arg1 arg2 ...
Ici, au lieu d'utiliser bash -l
Pour exécuter un shell de connexion, nous source explicitement $0
Et passons /home/user/.bashrc
À cette position.
[Service]
Type=simple
User=user
Group=user
ExecStart=/bin/bash -c '. "$0" && exec "$@"' /home/user/.bashrc your-command arg1 arg2 ...
.bashrc
Sont généralement destinés à la configuration d'environnements interactifs. Cela signifie que leurs paramètres ne sont souvent pas appropriés pour les services.EnvironmentFile
séparé que vous auditez à la main pour votre service signifie que vous savez exactement avec quoi le service fonctionne et pouvez le configurer séparément de l'environnement interactif. Si vous avez audité manuellement ce fichier environnement pour avoir la même signification lorsqu'il est exécuté par un shell, vous pouvez également exécuter set -a; source /path/to/your-environment-file; set +a
Dans votre .bashrc
Pour extraire ses variables d'environnement.EnvironmentFile
dans un emplacement non accessible en écriture comme /etc/conf.d
Est donc plus sûr qu'un fichier de points dans le répertoire personnel de cet utilisateur.