Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 sad :

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