LINUX.ORG.RU

не устанавливаются переменные окружения


0

0

Здравствуйте.
необходимо запустить файл, который устанавливает кучу переменных окружения.
Для упрощения решения проблемы создал такой файл-пример с именем oebs2.env:

#!/bin/sh
ORACLE_HOME=«/home/oracle/oebs/db/tech_st/11.1.0»
export ORACLE_HOME
printenv | grep ORA


suse 10.
запускаю «Терминал среды GNOME 2.12.0», в нём выполняю:

oracle@oebs:~> printenv | grep ORA
oracle@oebs:~> /home/oracle/oebs/db/tech_st/11.1.0/oebs2.env
ORACLE_HOME=/home/oracle/oebs/db/tech_st/11.1.0
oracle@oebs:~> printenv | grep ORA
oracle@oebs:~>

т.е. во время выполнения скрипта, переменная окружения устанавливается, но после выполнения скрипта, в основном терминале, она не установлена!
такое ощущение, что разные пространства переменных используются при работе скрипта и в самом терминале.
Почему так, как сделать так, чтобы переменные окружения, устанавливаемые в скрипте, «подхватывались» и виделись и в основном терминале?

>такое ощущение, что разные пространства переменных используются при работе скрипта и в самом терминале
Так и есть они наследуются от родительских программ дочерним, но не наоборот
Прописывай переменные окружения в .bashrc в домашнем каталоге

xorik ★★★★★
()
Ответ на: комментарий от xorik

гм.. а в солярке же это работает (в консоли, не в gui) видимо, в настоящей консоли Суси это будет работать? Как сделать так, чтобы всё же было общее пространство для консоли и запускаемого в ней скрипта?

shredder2003
() автор топика
Ответ на: комментарий от shredder2003

>а в солярке же это работает
Не может такого быть! Почитай хотя бы википедию: http://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD...

Важной особенностью является то, что при создании нового процесса он получает локальную копию среды, а значит не может изменить напрямую глобальные установки.

xorik ★★★★★
()
Ответ на: комментарий от xorik

Хотя насчет export я не уверен, может и я туплю...

xorik ★★★★★
()
Ответ на: комментарий от AITap

сделал так:

#!/bin/sh
export ORACLE_HOME=«/home/oracle/oebs/db/tech_st/11.1.0»
#export ORACLE_HOME
printenv | grep ORA


, но результат тот же:

oracle@oebs:~> printenv | grep ORA
oracle@oebs:~> /home/oracle/oebs/db/tech_st/11.1.0/oebs2.env
ORACLE_HOME=/home/oracle/oebs/db/tech_st/11.1.0
oracle@oebs:~> printenv | grep ORA
oracle@oebs:~>

shredder2003
() автор топика
Ответ на: комментарий от xorik

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

shredder2003
() автор топика

Указывайте в .bashrc, либо в /etc/profile.d/oracle.sh (к примеру).

Можно еще запускать приложение в том же самом скрипте, тогда все переменные среды, естественно, подхватятся. Или можно $ VARIABLE=«value» application args.

Или вам только вот так, как вы описали, и больше никак нельзя?


p.s.: Кстати, был немного в шоке от статьи http://en.wikipedia.org/wiki/Environment_variable - там большая часть про винду.

zhuravlik ★★★★
()

. /home/oracle/oebs/db/tech_st/11.1.0/oebs2.env

anonymous
()

При выполнении скрипта создаётся новый экземпляр шелла, в котором и устанавливается эта переменная окружения. Чтобы она была установлена в текущем экземпляре, очевидно, нужно выполнить все эти команды в нём. Для этого используй встроенную команду шелла source или её алиас `.' Типа как-то так:
$ source /home/oracle/oebs/db/tech_st/11.1.0/oebs2.env
или как уже написали
$ . /home/oracle/oebs/db/tech_st/11.1.0/oebs2.env

Laz ★★★★★
()
Ответ на: комментарий от Komintern

это вы считаете, что лучше. если бы так считал оракл, он бы так и сделал.

shredder2003
() автор топика
Ответ на: комментарий от Laz

$ . /home/oracle/oebs/db/tech_st/11.1.0/oebs2.env супер! работает! спасибо!!!

shredder2003
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.