Déclaration de var. d'env depuis un script. - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 27-04-2007 à 22:50:11
Alors, ca ne marche effectivement pas comme ca.
Quand tu quittes le script, les variables définies à l'intérieur ne le sont plus après l'exécution.
Je te conseille de mettre ses positionnement de variables dans ton .bashrc (si tu utilises bash ce qui est sans doute le cas)
Marsh Posté le 28-04-2007 à 00:11:13
Bonsoir,
Quand tu exécute un script depuis ton shell (sh, bash, ksh, csh, ..), celui-ci crée (il "fork" ) un prcessus fils qui va se charger de lire et exécuter les lignes de ton script. Si tu mets comme interpréteur :
#!/bin/sh |
au début de ton script et que tu es sous bash par exemple, bash va créer un processus (avec le binare /bin/sh) qui va vivre sa vie pendant l'exécution du script et à la fin, rendre la main au bash.
Tu vois, ce n'est même pas le même binaire qui prend en charge ton script. C'est donc normal que le pauvre bash ne sache pas ce que son défunt fils (/bin/sh) a traficoté pendant sa vie. Le fait que tu mette le même interpréteur pour ton script que ton shell n'y chagera rien. Ton shell lancerait une copie de lui-même, qui à sa mort emportera son env avec elle à la tombe.
Pour que ton shell en cours prenne à sa charge (qu'il "source" ) les instructions de ton script; il faut juste le lui dire :
. /tmp/scripts/setEnv.sh |
Ainsi tu lui demande de ne même pas vérivier si tu spécifie un interpréteur. Il ne créra pas de processus fils : il exécutera lui-même les instructions.
C'est en fait comme s'il y avait un tomtom41 virtuel qui tapait le instructions du script une à une dans ta fenêtre shell
Attention : s'il y a du "code actif", il sera exécuté aussi, et ça on l'oublie souvent : les rm et mv .. seront exécutés.. et les exit aussi ! Dans un script à sourcer, il faut mettre uniquement des déclarations (de variables et de fonctions..). Pas conseillé de mettre du traitement..
Marsh Posté le 28-04-2007 à 08:17:52
p-seeker23 a écrit : Bonsoir,
|
Bon à savoir.
Marsh Posté le 27-04-2007 à 17:28:52
Bonjour,
j'ai fait un script qui declare des var d'env...
[umcprd@tqmutu01b ~]$ cat /tmp/scripts/setEnv.sh
export ANT_HOME=/opt/apache-ant-1.6.5
export JAVA_HOME=/opt/jdk15
export JBOSS_HOME=/appli/umcprd/jboss-4.0.4.GA
export EJBCA_HOME=/appli/umcprd/ejbca_3_4_1
export PATH=.usr/lunasa/bin:$JAVA_HOME/bin:$ANT_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/jre/lib/ext:$CLASSPATH
export LD_LIBRARY_PATH=/usr/lunasa/jsp/lib:$LD_LIBRARY_PATH
si j'execute mon script, les variables existent bien pdt mon script, mais une fois mon script terminé...je n'ai plus accès aux variables
comment puis je faire ?
merci pour votre aide