Есть такая проблема: один скрипт на sh должен последовательно вызывать набор других скриптов. Первый из вызываемых должен определить определенный набор переменных окружения, остальные скрипты должны установленные переменные окружения видеть.
Проблема в том, что После выполнения первого скрипта переменные окружения для остальных не устанавливаются. Посоветуйте, как решить проблему?
Область видимости переменных в sh
Модератор: Модераторы разделов
-
madskull
- Сообщения: 1019
- Статус: Экс-металлюга
-
nercus
- Сообщения: 150
Re: Область видимости переменных в sh
Действие переменных распространяется только на процесс шелла, в котором они были установлены.
Для того, чтобы переменные были также видны и во всех дочерних процессах шелла, нада сделать export.
ABC=123 # только в рамках данного процесса
export ABC # а теперь и для всех дочерних процессов
добавил:
таки madskull меня опередил
Для того, чтобы переменные были также видны и во всех дочерних процессах шелла, нада сделать export.
ABC=123 # только в рамках данного процесса
export ABC # а теперь и для всех дочерних процессов
добавил:
таки madskull меня опередил
2.6.14-gentoo-r5
kde-3.5.0 | openbox-3.2
Deep Purple | Rob Zombie | Led Zeppelin | ДДТ
kde-3.5.0 | openbox-3.2
Deep Purple | Rob Zombie | Led Zeppelin | ДДТ
-
alexsf
- Сообщения: 197
- ОС: openSUSE-11.2
Re: Область видимости переменных в sh
Скрипт itdata.sh, с которого все начинается:
#!/bin/bash
sh ./envvar.sh
echo $ORADBVER
Скрипт envvar.sh:
#!/bin/bash
export ORADBVER=9.2.0.6
В результате работы itdata.sh ничего не возвращает
#!/bin/bash
sh ./envvar.sh
echo $ORADBVER
Скрипт envvar.sh:
#!/bin/bash
export ORADBVER=9.2.0.6
В результате работы itdata.sh ничего не возвращает
-
madskull
- Сообщения: 1019
- Статус: Экс-металлюга
Re: Область видимости переменных в sh
Ну, значит мы тебя не поняли...
У тебя передача переменных не из главного в дочерний, а из дочернего в главный.
А это невозможно.
вместо
sh ./envvar.sh
используй
. ./envvar.sh
У тебя передача переменных не из главного в дочерний, а из дочернего в главный.
А это невозможно.
вместо
sh ./envvar.sh
используй
. ./envvar.sh
ArchLinux / IceWM
-
alexsf
- Сообщения: 197
- ОС: openSUSE-11.2
Re: Область видимости переменных в sh
Спасибо, так работает 