2010-08-12 13 views
1

J'ai exécuté le script ci-dessous pour définir les variables d'environnement pour oracle (oracle_env.sh qui est fourni avec le package oracle lui-même).Les variables exportées ne sont pas reflétées dans la sortie "env"

ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server 
export ORACLE_HOME 
ORACLE_SID=XE 
export ORACLE_SID 
NLS_LANG=`$ORACLE_HOME/bin/nls_lang.sh` 
export NLS_LANG 
PATH=$ORACLE_HOME/bin:$PATH 
export PATH 
if [ $?LD_LIBRARY_PATH ] 
then 
     LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH 
else 
     LD_LIBRARY_PATH=$ORACLE_HOME/lib 
fi 
export LD_LIBRARY_PATH 

Après que lorsque je courais env pour faire en sorte que les variables sont exportées correctement, j'ai trouvé aucune propriété sont exportés (ci-dessous est la sortie). Maintenant, je ne suis pas sûr si les variables sont exportées correctement. Si ce n'est pas ce que j'ai mal fait? Sil te plait aide moi. Et encore une chose, je cours en tant que root.

+0

déboguer un script qui vient avec un programme d'installation n'est pas la programmation liée – meagar

+1

Un script, par définition, est un type de programme. – Darron

Répondre

3

Les scripts ne définit que l'environnement à l'intérieur du sous-shell il fonctionne Vous devez sourcer il.

# POSIX 
. /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/oracle_env.sh 

ou

# bash/ksh 
source /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/oracle_env.sh 
+0

Merci .. cela a fonctionné pour moi. – hnm

0

variables d'export les rend disponibles que pour les enfants de la coquille exportation à partir de. Il n'y a aucun moyen de changer les variables d'environnement dans le shell parent, comme vous semblez essayer de le faire. Vous pouvez modifier les variables dans la même coquille en s'approvisionnant le script en utilisant la commande « point »:

. myscript 
2

Je crois que lorsque vous exécutez un script, fourchettes bash et EXECs le script dans une nouvelle instance de la coquille, les exportations fait dans le script ne se propage pas à votre shell parent.

Cependant, il semble que vous pouvez simplement exécuter votre script avec:

prompt$ . /path/to/script.sh # note the period! 

Exemple:

prompt$ echo "export FOO=foobar" > /tmp/tst 
prompt$ sh /tmp/tst 
prompt$ echo $FOO 

prompt$ . /tmp/tst 
prompt$ echo $FOO 
foobar 
1

Je crois que vous devriez utiliser la source pour charger ce script.

source /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/oracle_env.sh 

De source homme:

source filename [arguments] 

     Read and execute commands from filename in the current shell environment and 
return the exit 

     status of the last command executed from filename.