J'ai eu un problème similaire en appelant ssh-agent -s dans un script appelé par l'option -e dans rsync.
Dans le script eval $(ssh-agent -s) ne préservent pas les variables d'environnement pour le prochain appel.
rsync -e 'source ssh-check-agent.sh -p 8022' ne fonctionne pas, donc j'ai fait une solution de rechange. Dans le script j'ai sauvegardé les variables dans un fichier temporel après avoir appelé ssh-agent comme :
echo "export SSH_AUTH_SOCK=$SSH_AUTH_SOCK;" > /tmp/ssh-check-agent.vars
echo "export SSH_AGENT_PID=$SSH_AGENT_PID;" >> /tmp/ssh-check-agent.vars
et après dans le script qui appelle rsync (backup.sh) j'appelle :
source /tmp/ssh-check-agent.vars
Le problème est que le script qui appelle rsync doit être appelé par source (source backup.sh).
Je sais que ce n'est pas la question (j'utilise deux fois la source), mais je mets ici si quelqu'un a un problème similaire avec rsync.
1 votes
Vous pourriez essayer d'utiliser un alias au lieu d'un script pour définir votre variable.
0 votes
Le script sur lequel je travaille, est une sorte de gestionnaire virtuel java, je fais quelques calculs alors je devrais exporter un $JAVA_HOME à l'env, et l'ajouter à PATH.
0 votes
Vous pourriez écrire les informations dans un fichier et les relire ensuite, mais le sourcing semble beaucoup plus facile.
17 votes
Les processus enfants ne peuvent pas modifier l'environnement de leur parent. Le parent doit choisir de s'altérer lui-même (soit avec la fonction
source
oeval
ou ...)0 votes
Merci @glennjackman , je finis par envelopper les commandes dans une fonction et la source de .bash_profile .
0 votes
Duplicata possible de Variables d'environnement global dans un shell script.
2 votes
Pour en savoir plus sur la source,
man source
ne fonctionnera pas parce quesource
est intégré dans bash, vous devez exécuterhelp source
0 votes
@peter - Wow. Je ne peux pas croire que j'ai utilisé
bash
depuis plus d'une décennie et c'est la première fois que j'entends parler dehelp
.0 votes
L'aide de @ArtWarfare fonctionne également comme une référence pour les constructions shell courantes telles que if, for...etc.