2010-08-12 1 views
1

Я выполнил сценарий ниже, чтобы задать переменные окружения для oracle (oracle_env.sh, который поставляется вместе с пакетом oracle).экспортированные переменные не отражены в выводе «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 

После этого, когда я управлял env, чтобы гарантировать, что переменные экспортируются должным образом, я нашел никаких свойств не экспортируются (ниже это выход).

invincible:/home/invincible# /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/oracle_env.sh 
invincible:/home/invincible# env | grep ORACLE_HOME 
invincible:/home/invincible# 

Теперь я не уверен, экспортированы ли переменные правильно. Если не то, что я сделал неправильно? Пожалуйста, помогите мне. И еще одна вещь, я бегу как корень.

+0

Отладка скрипт, который поставляется с инсталлятором не программирование связанных – meagar

+1

Сценарий, по определению, является тип программы. – Darron

ответ

3

скриптами только устанавливает среду внутри подоболочки она работает в вас источник оно:.

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

или

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

Спасибо .. это сработало для меня. – hnm

0

Экспорт переменных только делает их доступными для детей оболочки экспортируемой их от. Невозможно изменить переменные среды в родительской оболочке, как вы, кажется, пытаетесь сделать. Вы можете изменить переменные в одной и той же оболочки снабжаем скрипт, используя команду «точка»:

. myscript 
2

Я считаю, что при запуске сценария, Баш вилок и EXECS сценарий в новый экземпляр оболочки, либо экспорт выполненное в скрипте, не распространяется на родительскую оболочку.

Однако, кажется, что вы можете просто выполнить сценарий с:

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

Пример:

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

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

Я считаю, что вы должны использовать источник чтобы загрузить скрипт.

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

От Источник человек:

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.