Pages : 1
#1 Le 29/04/2008, à 20:49
- Rone
Probleme avec script
Bonjour tout le monde !!
j'ai un script :
#!/bin/sh
export PATH=$PATH:/usr/local/Co-design
export PRJBASE=/usr/local/Co-design/codesign/core
export LEON_SW=$PRJBASE/leon_sw/bin
export TSIM_OPTIONS=-fast_uart
export MODELSIM=$PRJBASE/make/modelsim.ini
export SYSTEMC=/usr/local/Co-design/systemc:$SYSTEMC
export SYSTEMC=/usr/local/Co-design/systemc/include:$SYSTEMC
export SYSTEMC=/usr/local/Co-design/systemc/include/scv:$SYSTEMC
export SYSTEMC_TLM=/usr/local/Co-design/TLM
export PATH=/usr/local/Co-design/sparc-elf-3.4.4:$PATH
export PATH=/usr/local/Co-design/sparc-elf-3.4.4/bin:$PATH
export PATH=/usr/local/Co-design/sparc-elf-3.4.4/sparc-elf/bin:$PATH
export T=modelsim
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/system-2.2.0/objdir/lib-linux/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/system-2.2.0/objdir/lib-linux
echo $PRJBASE | tr : \\n
echo $LEON_SW | tr : \\n
echo $TSIM_OPTIONS | tr : \\n
echo $MODELSIM | tr : \\n
echo $SYSTEMC | tr : \\n
echo $PATH | tr : \\n
echo $T | tr : \\n
echo $LD_LIBRARY_PATH | tr : \\n
je l'execute avec ./script.sh (en ayant mis les droits d'execution ) et il m'affiche ca :
/usr/local/Co-design/codesign/core
/usr/local/Co-design/codesign/core/leon_sw/bin
-fast_uart
/usr/local/Co-design/codesign/core/make/modelsim.ini
/usr/local/Co-design/systemc/include/scv
/usr/local/Co-design/systemc/include
/usr/local/Co-design/systemc
/usr/local/Co-design/sparc-elf-3.4.4/sparc-elf/bin
/usr/local/Co-design/sparc-elf-3.4.4/bin
/usr/local/Co-design/sparc-elf-3.4.4
/usr/local/Co-design
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/usr/local/Co-design
donc à priori tout se passe bien
MAIS lorsque je fais dans le meme shell echo $PRJBASE, il me dit que cette variable est vide :
Je ne comprends pas ce qu'il se passe si quelqu'un pouvait m'aider
Merci
Hors ligne
#2 Le 29/04/2008, à 20:54
- snapshot
Re : Probleme avec script
Est ce que tu veux dire que tu tapes echo $PRJBASE juste après avoir lancé ton script, et donc, dans le "même shell" ?
Pensez à mettre [Résolu] dans le titre une fois votre problème réglé !
Hors ligne
#3 Le 29/04/2008, à 20:58
- trucutu
Re : Probleme avec script
C'est normal. L'exécution de ton script récupère l'environnement de départ, mais ne peut pas le changer. Elle modifie l'environnement "fils" qui pourra être utilisé par des sous-scripts.
La seule méthode que je connaisse pour faire ce que tu veux faire est :
. /path/mon_script
La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !
Hors ligne
#4 Le 29/04/2008, à 21:07
- Rone
Re : Probleme avec script
snapshot : oui c'est ca
Hors ligne
#5 Le 29/04/2008, à 21:20
- snapshot
Re : Probleme avec script
et bien c'est exactement ce que t'a dit trucutu. Quand tu lances ton script, le shell "fork" un nouveau processu. C'est ce processus qui contient les nouvelles variables. Un fois qu'il a terminé, le processus (et les nouvelles variables) sont détruit. Quand tu récupère la main, c'est normal qu'il n'y a plus rien...
Ce que te dis trucutu, c'est de faire un "include" (avec le . que tu peux changer avec le mot clé source, mais l'usage reste quand même de mettre le . ). Comme ça, les variables sont chargées à l'intérieur de ton processus.
Pensez à mettre [Résolu] dans le titre une fois votre problème réglé !
Hors ligne
#6 Le 29/04/2008, à 21:24
- snapshot
Re : Probleme avec script
Par contre, quand ton script va devenir plus compliqué, il deviendra sans doute difficile de l'inclure pour connaitre les variables. L'autre solution consiste à ajouter la ligne :
bash
à un endroit stratégique du script. De cette manière, tu forkes encore un nouveau processus qui hérite des variables marquées en export du processus parent. Tu te retrouves donc avec un shell interactif qui contient ces définitions et ça te permet d'inspecter leur valeur. Mais il ne faut pas oublier de faire exit ou Ctrl+D pour rendre la main à la suite du script.
Pensez à mettre [Résolu] dans le titre une fois votre problème réglé !
Hors ligne
#7 Le 29/04/2008, à 21:33
- Rone
Re : Probleme avec script
euh merci pour la réponse...mais étant newbie (désolé) je ne sais pas comment faire cet "include"?
je tape dans le script
include /usr/...../messcript ? c'est ca?
Hors ligne
#8 Le 29/04/2008, à 21:43
- snapshot
Re : Probleme avec script
heuu... non !
D'abord, est ce que tu as compris cette héritage des variables d'environnement entres les processus parents et fils ? C'est important car tout le système repose sur ça.
Ensuite, pour cette histoire d'include, je voulais dire que le code shell :
. /usr/...../messcript
est identique au code shell suivant :
source /usr/...../messcript
Mais que 1) par habitude, on n'utilise jamais "source" mais le point, et que 2) on parle d'include car preque tous les autres langages/logiciels utilisent ce terme.
Pensez à mettre [Résolu] dans le titre une fois votre problème réglé !
Hors ligne
#9 Le 30/04/2008, à 17:38
- Rone
Re : Probleme avec script
ah
Merci ca marche !!!
Hors ligne
Pages : 1