A voir également:
- Script les visiteurs pdf
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Script vidéo youtube - Guide
- Save as pdf - Télécharger - Bureautique
- Télécharger dictionnaire larousse pdf gratuit - Télécharger - Dictionnaires & Langues
- Comment faire un pdf - Guide
3 réponses
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
10 nov. 2010 à 11:25
10 nov. 2010 à 11:25
Salut,
Quand tu lances un script par :
Le script est lancé dans un sous shell (appelé communément shell fils), dont les seules variables reconnues seront celles définies à l'intérieur du script, d'où l'intérêt de sourcer un fichier contenant des variables que l'on veut inclure dans notre nouvel environnement.
Quand tu lances un script en le sourçant :
En fait tu le lances en restant dans l'environnement du shell initial (shell père) sans créer de nouveau processus. Tout changement apporté à une variable sera répercuté dans l'environnement du shell courant (shell père). De même une commande comme "exit" dans le fichier "sourcé" aura des répercussions sur le shell où tu te trouves et devrait mettre fin à son processus en quittant le shell ;-\
Quand tu lances un script par :
./mon_script.sh ou (si le répertoire contenant le script est dans la variable $PATH) mon_script.sh
Le script est lancé dans un sous shell (appelé communément shell fils), dont les seules variables reconnues seront celles définies à l'intérieur du script, d'où l'intérêt de sourcer un fichier contenant des variables que l'on veut inclure dans notre nouvel environnement.
Quand tu lances un script en le sourçant :
. le_script
En fait tu le lances en restant dans l'environnement du shell initial (shell père) sans créer de nouveau processus. Tout changement apporté à une variable sera répercuté dans l'environnement du shell courant (shell père). De même une commande comme "exit" dans le fichier "sourcé" aura des répercussions sur le shell où tu te trouves et devrait mettre fin à son processus en quittant le shell ;-\
Merci, c'est clair.
Pourquoi alors : (pour reprendre mon exemple toto>titi>action)
Quand "titi" source "action" : ça marche, sauf arrtêt brutal quand j'ajoute ces lignes dans "action" :
export VERSION_ORACLE="10.2.0.4"
export ORACLE_HOME=$ORACLE_BASE/${VERSION_ORACLE}
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export PATH=/bin:/usr/bin:/etc:/usr/lbin:/usr/ccs/bin:/usr/bin/X11:/usr/local/bin:/apps/oracle/10.2.0.4/bin:/apps/safewatch:/home/mqm
/SHINE:/usr/java14/jre/bin::/apps/cft/filexe:/apps/cft/filusr:/apps/cft/filexit:/apps/cft/filapi:/usr/bin:/etc:/usr/sbin:/usr/ucb:/us
r/bin/X11:/sbin:/usr/lpp/mqm/bin:/usr/lpp/mqm/samp/bin:.:/apps/safewatch/current/outils/cmd:/apps/safewatch/current/outils/bin:/apps/
safewatch/current/adm/cmd:/usr/mqm/samp/bin:/apps/cft/filexe:/apps/cft/filusr:/apps/cft/filexit:/apps/cft/filapi:/apps/cft/ifcft
export LIBPATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32:$ORACLE_HOME/precomp/public
export TNS_ADMIN=$ORACLE_BASE/adm/network
Alors que quand "titi" lance "action" (même avec les lignes) sans le sourcer, ça marche (sauf que les variables ne sont pas définies globalement, évidemment).
Y a-t-il dans les lignes ajoutées quelque chose de spécial qui le fasse planter ?
Pourquoi alors : (pour reprendre mon exemple toto>titi>action)
Quand "titi" source "action" : ça marche, sauf arrtêt brutal quand j'ajoute ces lignes dans "action" :
export VERSION_ORACLE="10.2.0.4"
export ORACLE_HOME=$ORACLE_BASE/${VERSION_ORACLE}
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export PATH=/bin:/usr/bin:/etc:/usr/lbin:/usr/ccs/bin:/usr/bin/X11:/usr/local/bin:/apps/oracle/10.2.0.4/bin:/apps/safewatch:/home/mqm
/SHINE:/usr/java14/jre/bin::/apps/cft/filexe:/apps/cft/filusr:/apps/cft/filexit:/apps/cft/filapi:/usr/bin:/etc:/usr/sbin:/usr/ucb:/us
r/bin/X11:/sbin:/usr/lpp/mqm/bin:/usr/lpp/mqm/samp/bin:.:/apps/safewatch/current/outils/cmd:/apps/safewatch/current/outils/bin:/apps/
safewatch/current/adm/cmd:/usr/mqm/samp/bin:/apps/cft/filexe:/apps/cft/filusr:/apps/cft/filexit:/apps/cft/filapi:/apps/cft/ifcft
export LIBPATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32:$ORACLE_HOME/precomp/public
export TNS_ADMIN=$ORACLE_BASE/adm/network
Alors que quand "titi" lance "action" (même avec les lignes) sans le sourcer, ça marche (sauf que les variables ne sont pas définies globalement, évidemment).
Y a-t-il dans les lignes ajoutées quelque chose de spécial qui le fasse planter ?
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
10 nov. 2010 à 11:48
10 nov. 2010 à 11:48
Dans ton exemple export PATH et export LD_LIBRARY_PATH les chemins ont l'air tronqué (retour à la ligne), est-ce le cas dans ton script ?
Non : c'est pas tronqué, c'est l'éditeur du forum qui fait ça.
En fait mon "action.ksh" fonctionne parfaitement quand il est appellé de façon plus directe.
En fait mon "action.ksh" fonctionne parfaitement quand il est appellé de façon plus directe.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
10 nov. 2010 à 18:21
10 nov. 2010 à 18:21
Essaies de rendre ton script plus verbeux (ajout de set -xv après ton shebang) afin d'essayer de voir comment sont interprétées les variables ;-\
Sinon, je ne vois aucune définition de la variable "$ORACLE_BASE" ;-\
Sinon, je ne vois aucune définition de la variable "$ORACLE_BASE" ;-\
8 août 2019 à 15:15