Donc, l'essentiel, c'est que j'essaie de faire en sorte qu'un seul script fonctionne pour définir les variables d'environnement (appelons-le setenv.sh
) qui sera utilisé dans les scripts suivants. Sous Windows (je sais, c'est un mot de 4 lettres ici ...), je peux utiliser un fichier de commandes pour définir une variable d'environnement pour après le fichier de commandes est terminé. Je cherche le même effet.
Cependant, je viens d'apprendre, en parcourant Internet, que les variables d'environnement définies dans un script (ou shell) ne persistent que dans les shells enfants et n'affectent pas les shells parents. Ok quoi que ce soit, bien maintenant ce que je veux savoir est ce que je peux exécuter un script inline dans un autre script? Par inline, je parle de quelque chose d'analogue à la directive #include
de C/C++. Je le veux parce que si je peux appeler un script comme si il était exécuté dans le script actuel, mes variables d'environnement persisteraient au moins pendant toute la durée du script souhaité.
Par exemple, quelque chose comme ceci:
cat ~/install/setenv.sh | /bin/bash
echo "JBoss home directory is set to $JBOSS_HOME"
Mais je me rends compte que même cela ne fonctionnera pas tout à fait et je commence un enfant Shell avec un appel à /bin/bash
. Je vais bien si je dois appeler ceci setenv.sh
pour chaque script avec lequel je veux qu'il s'exécute en ligne.
si vous souhaitez inclure des variables env, vous pouvez définir ces variables dans un fichier, puis source
ce fichier dans votre script.
Par exemple: dans myconfig je pourrais faire:
#!/bin/bash
EDITOR=emacs
JBOSS_HOME=/path/to/jboss/home
puis dans mon script shell:
#!/bin/bash
source /path/to/myconfig
echo "JBOSS home dir is $JBOSS_HOME"
et cela fonctionnerait.