Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1534 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Déclaration de var. d'env depuis un script.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Déclaration de var. d'env depuis un script.

n°907800
tomtom41
It's not a bug, it's a feature
Posté le 27-04-2007 à 17:28:52  profilanswer
 

:hello:  
 
Bonjour,
 
j'ai fait un script qui declare des var d'env...

Citation :


[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 :)

mood
Publicité
Posté le 27-04-2007 à 17:28:52  profilanswer
 

n°907867
TofK
Posté le 27-04-2007 à 22:50:11  profilanswer
 

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)


Message édité par TofK le 27-04-2007 à 22:50:51
n°907879
p-seeker23
Posté le 28-04-2007 à 00:11:13  profilanswer
 

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  :ouch:  
 
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..  :non:  
 
 

n°907916
fugitif67
Posté le 28-04-2007 à 08:17:52  profilanswer
 

p-seeker23 a écrit :

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  :ouch:  
 
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..  :non:


Bon à savoir.
 [:athome]

n°909407
matafan
Posté le 04-05-2007 à 13:51:10  profilanswer
 

"." est un alias pour "source", ou inversement.

n°909553
Taz
bisounours-codeur
Posté le 05-05-2007 à 00:09:31  profilanswer
 

source c'est de la foutaise de bash
 
. est très bien


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Déclaration de var. d'env depuis un script.

 

Sujets relatifs
Script pour fermer Outlook automatiquementscript liste de fichiers
Ecrire un script avec excel[Noob] Ajouter avec un script une variable d'env
Script procmailcréer une partition dans un script
création d'un script shell[Sed] Intégration dans un script
Script avec choixse logguer en root dans un script
Plus de sujets relatifs à : Déclaration de var. d'env depuis un script.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR