Переменные среды из / etc / environment не переданы дочернему процессу?

У меня проблема. Я установил переменную окружения в /etc/environment, используя BOOST_LIBRARYDIR="/usr/local/lib/boost/release".

echo $BOOST_LIBRARYDIR правильно отображает значение в терминале. Однако, если я выполню echo $BOOST_LIBRARYDIR в скрипте, используя ./test.sh, он покажет переменную env как пустую. Насколько я понимаю, это должно быть установлено и для дочерних процессов?

3
задан 18 April 2011 в 23:11

2 ответа

Поскольку /etc/environment, кажется, получен из /etc/init/gdm.conf, я думаю, вы можете заменить свою строку на

export BOOST_LIBRARYDIR="/usr/local/lib/boost/release"
0
ответ дан 18 April 2011 в 23:11

Если вы хотите, чтобы переменная окружения передавалась потомкам, вы должны экспортировать ее. Чтобы проверить, экспортирован ли он, используйте команду env. Самый безопасный способ сделать это заключается в следующем.

BOOST_LIBRARYDIR="/usr/local/lib/boost/release"; export BOOST_LIBRARYDIR

Более новые оболочки, такие как bash и ksh, принимают более простую форму.

export BOOST_LIBRARYDIR ="/usr/local/lib/boost/release"
0
ответ дан 18 April 2011 в 23:11

Другие вопросы по тегам:

Похожие вопросы: